source: codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90 @ 992

Last change on this file since 992 was 958, checked in by dubos, 5 years ago

devel : vertical interpolation for unstructured mesh

File size: 2.1 KB
Line 
1MODULE compute_diagnostics_mod
2  USE icosa
3  IMPLICIT NONE
4  SAVE
5  PRIVATE
6
7  ! fake array dimensions, for interfaces
8  INTEGER, PARAMETER :: iim_jjm_i=1, iim_jjm_u=1, iim_jjm_v=1, llm_=1, llm1=1, nqdyn_=1
9
10  INTERFACE
11
12    SUBROUTINE comp_rhodz(flag,ps,rhodz)
13      IMPORT
14      LOGICAL, INTENT(IN) :: flag
15      REAL(rstd),INTENT(IN)  :: ps(iim_jjm_i)
16      REAL(rstd),INTENT(OUT) :: rhodz(iim_jjm_i,llm_)
17    END SUBROUTINE comp_rhodz
18
19    SUBROUTINE comp_pression(ps, p, offset)
20      IMPORT
21      INTEGER, INTENT(IN) :: offset
22      REAL(rstd), INTENT(IN) :: ps(iim_jjm_i)
23      REAL(rstd), INTENT(OUT) :: p(iim_jjm_i,llm_)
24    END SUBROUTINE comp_pression
25
26    SUBROUTINE comp_temperature(pmid,q,temp)
27      IMPORT
28      REAL(rstd),INTENT(IN)    :: pmid(iim_jjm_i, llm_)
29      REAL(rstd),INTENT(IN)    :: q(iim_jjm_i, llm_, nqdyn_)
30      REAL(rstd),INTENT(INOUT) :: temp(iim_jjm_i, llm_)
31    END SUBROUTINE comp_temperature
32
33    SUBROUTINE comp_hydro_press(rhodz, theta_rhodz, ps, p)
34      IMPORT
35      REAL(rstd),INTENT(IN)  :: rhodz(iim_jjm_i, llm_)
36      REAL(rstd),INTENT(IN)  :: theta_rhodz(iim_jjm_i, llm_, nqdyn_)
37      REAL(rstd),INTENT(OUT) :: ps(iim_jjm_i)
38      REAL(rstd),INTENT(OUT) :: p(iim_jjm_i, llm_)
39    END SUBROUTINE comp_hydro_press
40
41    SUBROUTINE comp_vert_interp(pmid,in,out,pval)
42      IMPORT
43      REAL(rstd),INTENT(IN) :: pmid(iim_jjm_i, llm_)
44      REAL(rstd),INTENT(IN) :: in(iim_jjm_i, llm_)
45      REAL(rstd),INTENT(OUT):: out(iim_jjm_i)
46      REAL(rstd),INTENT(IN) :: pval
47    END SUBROUTINE comp_vert_interp
48
49  END INTERFACE
50
51  PROCEDURE(comp_rhodz),       POINTER :: compute_rhodz   => NULL()
52  PROCEDURE(comp_pression),    POINTER :: compute_pression => NULL(), compute_pression_mid => NULL()
53  PROCEDURE(comp_temperature), POINTER :: compute_temperature => NULL()
54  PROCEDURE(comp_hydro_press), POINTER :: compute_hydrostatic_pressure => NULL()
55  PROCEDURE(comp_vert_interp), POINTER :: compute_vertical_interp => NULL()
56
57  PUBLIC :: compute_rhodz, compute_pression, compute_pression_mid, compute_temperature, compute_hydrostatic_pressure, &
58       compute_vertical_interp
59
60END MODULE compute_diagnostics_mod
Note: See TracBrowser for help on using the repository browser.