module comgeomphy real,save,allocatable :: airephy(:) real,save,allocatable :: cuphy(:) real,save,allocatable :: cvphy(:) real,save,allocatable :: rlatd(:) real,save,allocatable :: rlond(:) !$OMP THREADPRIVATE(airephy,cuphy,cvphy,rlatd,rlond) ! general (over global grid) latitudes and longitudes: ! useful for outputs real,save,allocatable :: rlonv(:) ! longitudes (rad) real,save,allocatable :: rlonu(:) ! longitude boundaries (rad) real,save,allocatable :: rlatu(:) ! latitudes (rad) real,save,allocatable :: rlatv(:) ! latitude boundaries (rad) !$OMP THREADPRIVATE(rlonv,rlonu,rlatu,rlatv) ! vertical grid real,save :: preff ! reference surface pressure (Pa) real,save,allocatable :: ap(:) real,save,allocatable :: bp(:) real,save,allocatable :: presnivs(:) real,save,allocatable :: pseudoalt(:) !$OMP THREADPRIVATE(preff,ap,bp,presnivs,pseudoalt) contains subroutine InitComgeomphy(klon_omp) implicit none integer,intent(in) :: klon_omp ! number of columns (on local omp grid) allocate(airephy(klon_omp)) allocate(cuphy(klon_omp)) allocate(cvphy(klon_omp)) allocate(rlatd(klon_omp)) allocate(rlond(klon_omp)) end subroutine InitComgeomphy subroutine initcomgeomphy_horiz(iim,jjm,rlonu_dyn,rlonv_dyn,& rlatu_dyn,rlatv_dyn) IMPLICIT NONE integer,intent(in) :: iim integer,intent(in) :: jjm real,intent(in) :: rlonu_dyn(iim+1) ! dyn grid boundaries (rad) real,intent(in) :: rlonv_dyn(iim+1) ! dyn grid longitudes (rad) real,intent(in) :: rlatu_dyn(jjm+1) ! dyn grid latitudes (rad) real,intent(in) :: rlatv_dyn(jjm) ! dyn grid boundaries (rad) allocate(rlonu(iim+1)) allocate(rlonv(iim+1)) allocate(rlatu(jjm+1)) allocate(rlatv(jjm)) rlonu(:)=rlonu_dyn(:) rlonv(:)=rlonv_dyn(:) rlatu(:)=rlatu_dyn(:) rlatv(:)=rlatv_dyn(:) end subroutine initcomgeomphy_horiz subroutine initcomgeomphy_vert(nlayer,preff_dyn,ap_dyn,bp_dyn,& presnivs_dyn,pseudoalt_dyn) IMPLICIT NONE integer,intent(in) :: nlayer ! number of atmospheric layers real,intent(in) :: preff_dyn ! reference surface pressure (Pa) real,intent(in) :: ap_dyn(nlayer+1) ! hybrid coordinate at interfaces real,intent(in) :: bp_dyn(nlayer+1) ! hybrid coordinate at interfaces real,intent(in) :: presnivs_dyn(nlayer) ! Appproximative pressure of atm. layers (Pa) real,intent(in) :: pseudoalt_dyn(nlayer) ! pseudo-altitude of atm. layers (km) allocate(ap(nlayer+1)) allocate(bp(nlayer+1)) allocate(presnivs(nlayer)) allocate(pseudoalt(nlayer)) preff=preff_dyn ap(:)=ap_dyn(:) bp(:)=bp_dyn(:) presnivs(:)=presnivs_dyn(:) pseudoalt(:)=pseudoalt_dyn(:) end subroutine initcomgeomphy_vert end module comgeomphy