MODULE compute_diagnostics_mod USE icosa IMPLICIT NONE PRIVATE INTERFACE SUBROUTINE comp_rhodz(flag,ps,rhodz) IMPORT LOGICAL, INTENT(IN) :: flag REAL(rstd),INTENT(IN) :: ps(:) REAL(rstd),INTENT(INOUT) :: rhodz(:,:) END SUBROUTINE comp_rhodz SUBROUTINE comp_pression(ps, p, offset) IMPORT INTEGER, INTENT(IN) :: offset REAL(rstd), INTENT(IN) :: ps(:) REAL(rstd), INTENT(OUT) :: p(:,:) END SUBROUTINE comp_pression SUBROUTINE comp_temperature(pmid,q,temp) IMPORT REAL(rstd),INTENT(IN) :: pmid(:,:) REAL(rstd),INTENT(IN) :: q(:,:,:) REAL(rstd),INTENT(INOUT) :: temp(:,:) END SUBROUTINE comp_temperature SUBROUTINE comp_hydro_press(rhodz, theta_rhodz, ps, p) IMPORT REAL(rstd),INTENT(IN) :: rhodz(:,:) REAL(rstd),INTENT(IN) :: theta_rhodz(:,:,:) REAL(rstd),INTENT(OUT) :: ps(:) REAL(rstd),INTENT(OUT) :: p(:,:) END SUBROUTINE comp_hydro_press SUBROUTINE comp_vert_interp(pmid,in,out,pval) IMPORT REAL(rstd),INTENT(IN) :: pmid(:,:) REAL(rstd),INTENT(IN) :: in(:,:) REAL(rstd),INTENT(OUT):: out(:) REAL(rstd),INTENT(IN) :: pval END SUBROUTINE comp_vert_interp END INTERFACE PROCEDURE(comp_rhodz), POINTER, SAVE :: compute_rhodz => NULL() PROCEDURE(comp_pression), POINTER, SAVE :: compute_pression => NULL(), compute_pression_mid => NULL() PROCEDURE(comp_temperature), POINTER, SAVE :: compute_temperature => NULL() PROCEDURE(comp_hydro_press), POINTER, SAVE :: compute_hydrostatic_pressure => NULL() PROCEDURE(comp_vert_interp), POINTER, SAVE :: compute_vertical_interp => NULL() PUBLIC :: compute_rhodz, compute_pression, compute_pression_mid, compute_temperature, compute_hydrostatic_pressure, & compute_vertical_interp END MODULE compute_diagnostics_mod