10 punjours, pdayref,ptimestep, &
46 REAL,
INTENT(IN) :: prad
49 REAL,
INTENT(IN) :: pcpp
50 REAL,
INTENT(IN) :: punjours
51 INTEGER,
INTENT (IN) :: nlayer
52 INTEGER,
INTENT (IN) :: iim
53 INTEGER,
INTENT (IN) :: jjm
54 INTEGER,
INTENT(IN) :: nbp
55 INTEGER,
INTENT(IN) :: communicator
56 REAL,
INTENT (IN) :: rlatu(jjm+1)
57 REAL,
INTENT (IN) :: rlatv(jjm)
58 REAL,
INTENT (IN) :: rlonv(iim+1)
59 REAL,
INTENT (IN) :: rlonu(iim+1)
60 REAL,
INTENT (IN) :: aire(iim+1,jjm+1)
61 REAL,
INTENT (IN) :: cu((iim+1)*(jjm+1))
62 REAL,
INTENT (IN) :: cv((iim+1)*jjm)
63 INTEGER,
INTENT (IN) :: pdayref
64 REAL,
INTENT(IN) :: ptimestep
65 INTEGER,
INTENT(IN) :: iflag_phys
67 INTEGER :: ibegin,iend,offset
69 CHARACTER (LEN=20) :: modname=
'iniphysiq'
70 CHARACTER (LEN=80) :: abort_message
71 REAL :: total_area_phy, total_area_dyn
74 REAL,
ALLOCATABLE :: boundslon_reg(:,:)
75 REAL,
ALLOCATABLE :: boundslat_reg(:,:)
78 REAL,
ALLOCATABLE :: latfi_glo(:)
79 REAL,
ALLOCATABLE :: lonfi_glo(:)
80 REAL,
ALLOCATABLE :: cufi_glo(:)
81 REAL,
ALLOCATABLE :: cvfi_glo(:)
82 REAL,
ALLOCATABLE :: airefi_glo(:)
83 REAL,
ALLOCATABLE :: boundslonfi_glo(:,:)
84 REAL,
ALLOCATABLE :: boundslatfi_glo(:,:)
87 REAL,
ALLOCATABLE,
SAVE :: latfi(:)
88 REAL,
ALLOCATABLE,
SAVE :: lonfi(:)
89 REAL,
ALLOCATABLE,
SAVE :: cufi(:)
90 REAL,
ALLOCATABLE,
SAVE :: cvfi(:)
91 REAL,
ALLOCATABLE,
SAVE :: airefi(:)
92 REAL,
ALLOCATABLE,
SAVE :: boundslonfi(:,:)
93 REAL,
ALLOCATABLE,
SAVE :: boundslatfi(:,:)
98 nbp,iim,jjm+1,nlayer,communicator)
102 ALLOCATE(boundslon_reg(iim,2))
103 ALLOCATE(boundslat_reg(jjm+1,2))
106 boundslon_reg(i,
east)=rlonu(i)
107 boundslon_reg(i,
west)=rlonu(i+1)
111 boundslat_reg(1,
south)= rlatv(1)
113 boundslat_reg(j,
north)=rlatv(j-1)
114 boundslat_reg(j,
south)=rlatv(j)
116 boundslat_reg(jjm+1,
north)= rlatv(jjm)
117 boundslat_reg(jjm+1,
south)= -
pi/2
121 boundslon_reg, boundslat_reg)
127 ALLOCATE(boundslonfi_glo(
klon_glo,4))
128 ALLOCATE(boundslatfi_glo(
klon_glo,4))
131 latfi_glo(1)=rlatu(1)
146 latfi_glo(k)= rlatu(j)
147 lonfi_glo(k)= rlonv(i)
148 cufi_glo(k) = cu((j-1)*(iim+1)+i)
149 cvfi_glo(k) = cv((j-1)*(iim+1)+i)
163 cufi_glo(
klon_glo) = cu((iim+1)*jjm+1)
164 cvfi_glo(
klon_glo) = cv((iim+1)*jjm-iim)
177 airefi_glo(1)=sum(aire(1:iim,1))
178 airefi_glo(
klon_glo)=sum(aire(1:iim,jjm+1))
181 total_area_dyn=sum(aire(1:iim,1:jjm+1))
182 total_area_phy=sum(airefi_glo(1:
klon_glo))
183 IF (total_area_dyn/=total_area_phy)
THEN
184 WRITE (
lunout, *)
'iniphysiq: planet total surface discrepancy !!!'
185 WRITE (
lunout, *)
' in the dynamics total_area_dyn=', total_area_dyn
186 WRITE (
lunout, *)
' but in the physics total_area_phy=', total_area_phy
187 IF (abs(total_area_dyn-total_area_phy)>0.00001*total_area_dyn)
THEN
189 abort_message =
'planet total surface discrepancy'
190 CALL abort_gcm(modname, abort_message, 1)
196 ALLOCATE(latfi(klon_omp),lonfi(klon_omp),cufi(klon_omp),cvfi(klon_omp))
197 ALLOCATE(airefi(klon_omp))
198 ALLOCATE(boundslonfi(klon_omp,4))
199 ALLOCATE(boundslatfi(klon_omp,4))
202 offset = klon_mpi_begin - 1
203 airefi(1:klon_omp) = airefi_glo(offset+klon_omp_begin:offset+klon_omp_end)
204 cufi(1:klon_omp) = cufi_glo(offset+klon_omp_begin:offset+klon_omp_end)
205 cvfi(1:klon_omp) = cvfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
206 lonfi(1:klon_omp) = lonfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
207 latfi(1:klon_omp) = latfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
208 boundslonfi(1:klon_omp,:) = boundslonfi_glo(offset+klon_omp_begin:offset+klon_omp_end,:)
209 boundslatfi(1:klon_omp,:) = boundslatfi_glo(offset+klon_omp_begin:offset+klon_omp_end,:)
212 CALL init_geometry(klon_omp,lonfi,latfi,boundslonfi,boundslatfi, &
216 CALL inifis(prad,pg,pr,pcpp)
225 IF (iflag_phys>=100)
THEN
226 CALL iniaqua(klon_omp,iflag_phys)
subroutine iniphysiq(iim, jjm, nlayer, nbp, communicator, punjours, pdayref, ptimestep, rlatu, rlatv, rlonu, rlonv, aire, cu, cv, prad, pg, pr, pcpp, iflag_phys)
subroutine init_interface_dyn_phys
subroutine abort_gcm(modname, message, ierr)
!$Id mode_top_bound COMMON comconstr && pi
!$Header!CDK comgeom COMMON comgeom aire
!$Header!CDK comgeom COMMON comgeom rlatu
subroutine inifis(prad, pg, pr, pcpp)
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
subroutine iniaqua(nlon, iflag_phys)
subroutine init_dimphy(klon0, klev0)
integer, parameter north_west
!$Header!CDK comgeom COMMON comgeom rlonu
!$Header!CDK comgeom COMMON comgeom rlatv
character(len=4), save type_trac
subroutine gr_dyn_fi(nfield, im, jm, ngrid, pdyn, pfi)
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
subroutine init_geometry(klon, longitude_, latitude_, boundslon_, boundslat_, cell_area_, dx_, dy_)
subroutine init_infotrac_phy(nqtot_, type_trac_)
!$Header!CDK comgeom COMMON comgeom cv
subroutine init_regular_lonlat(nbp_lon, nbp_lat, lon_reg_, lat_reg_, boundslon_reg_, boundslat_reg_)
integer, parameter north_east
integer, parameter south_east
integer, parameter south_west
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
subroutine init_physics_distribution(grid_type, nvertex, nbp, nbp_lon, nbp_lat, nbp_lev, communicator)
!$Header!CDK comgeom COMMON comgeom rlonv