10 punjours, pdayref,ptimestep, &
45 REAL,
INTENT(IN) :: prad
48 REAL,
INTENT(IN) :: pcpp
49 REAL,
INTENT(IN) :: punjours
50 INTEGER,
INTENT (IN) :: nlayer
51 INTEGER,
INTENT (IN) :: ii
52 INTEGER,
INTENT (IN) :: jj
53 INTEGER,
INTENT(IN) :: nbp
54 INTEGER,
INTENT(IN) :: communicator
55 REAL,
INTENT (IN) ::
rlatu(jj+1)
56 REAL,
INTENT (IN) ::
rlatv(jj)
57 REAL,
INTENT (IN) ::
rlonv(ii+1)
58 REAL,
INTENT (IN) ::
rlonu(ii+1)
59 REAL,
INTENT (IN) ::
aire(ii+1,jj+1)
60 REAL,
INTENT (IN) ::
cu((ii+1)*(jj+1))
61 REAL,
INTENT (IN) ::
cv((ii+1)*jj)
62 INTEGER,
INTENT (IN) :: pdayref
63 REAL,
INTENT(IN) :: ptimestep
66 INTEGER :: ibegin,iend,offset
68 CHARACTER (LEN=20) :: modname=
'iniphysiq'
69 CHARACTER (LEN=80) :: abort_message
70 REAL :: total_area_phy, total_area_dyn
73 REAL,
ALLOCATABLE :: boundslon_reg(:,:)
74 REAL,
ALLOCATABLE :: boundslat_reg(:,:)
77 REAL,
ALLOCATABLE :: latfi_glo(:)
78 REAL,
ALLOCATABLE :: lonfi_glo(:)
79 REAL,
ALLOCATABLE :: cufi_glo(:)
80 REAL,
ALLOCATABLE :: cvfi_glo(:)
81 REAL,
ALLOCATABLE :: airefi_glo(:)
82 REAL,
ALLOCATABLE :: boundslonfi_glo(:,:)
83 REAL,
ALLOCATABLE :: boundslatfi_glo(:,:)
86 REAL,
ALLOCATABLE,
SAVE :: latfi(:)
87 REAL,
ALLOCATABLE,
SAVE :: lonfi(:)
88 REAL,
ALLOCATABLE,
SAVE :: cufi(:)
89 REAL,
ALLOCATABLE,
SAVE :: cvfi(:)
90 REAL,
ALLOCATABLE,
SAVE :: airefi(:)
91 REAL,
ALLOCATABLE,
SAVE :: boundslonfi(:,:)
92 REAL,
ALLOCATABLE,
SAVE :: boundslatfi(:,:)
97 nbp,ii,jj+1,nlayer,communicator)
101 ALLOCATE(boundslon_reg(ii,2))
102 ALLOCATE(boundslat_reg(jj+1,2))
116 boundslat_reg(jj+1,
south)= -
pi/2
120 boundslon_reg, boundslat_reg)
126 ALLOCATE(boundslonfi_glo(
klon_glo,4))
127 ALLOCATE(boundslatfi_glo(
klon_glo,4))
131 latfi_glo(1)=
rlatu(1)
148 cufi_glo((
j-2)*ii+1+
i) =
cu((
j-1)*(ii+1)+
i)
149 cvfi_glo((
j-2)*ii+1+
i) =
cv((
j-1)*(ii+1)+
i)
177 airefi_glo(1)=sum(
aire(1:ii,1))
181 total_area_dyn=sum(
aire(1:ii,1:jj+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)
195 latfi_glo(1)=
rlatu(1)
196 lonfi_glo(1)=
rlonv(1)
199 airefi_glo(1)=
aire(1,1)
212 ALLOCATE(latfi(klon_omp),lonfi(klon_omp),cufi(klon_omp),cvfi(klon_omp))
213 ALLOCATE(airefi(klon_omp))
214 ALLOCATE(boundslonfi(klon_omp,4))
215 ALLOCATE(boundslatfi(klon_omp,4))
218 offset = klon_mpi_begin - 1
219 airefi(1:klon_omp) = airefi_glo(offset+klon_omp_begin:offset+klon_omp_end)
220 cufi(1:klon_omp) = cufi_glo(offset+klon_omp_begin:offset+klon_omp_end)
221 cvfi(1:klon_omp) = cvfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
222 lonfi(1:klon_omp) = lonfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
223 latfi(1:klon_omp) = latfi_glo(offset+klon_omp_begin:offset+klon_omp_end)
224 boundslonfi(1:klon_omp,:) = boundslonfi_glo(offset+klon_omp_begin:offset+klon_omp_end,:)
225 boundslatfi(1:klon_omp,:) = boundslatfi_glo(offset+klon_omp_begin:offset+klon_omp_end,:)
228 CALL init_geometry(klon_omp,lonfi,latfi,boundslonfi,boundslatfi, &
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
c c $Id c c calculs statistiques distribution nuage ftion du regime dynamique c c Ce calcul doit etre fait a partir de valeurs mensuelles CALL nbregdyn DO k
!$Header!CDK comgeom COMMON comgeom rlatu
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
!$Id klon initialisation mois suivants day_rain itap ENDIF!Calcul fin de nday_rain calcul nday_rain itap DO i
subroutine init_dimphy(klon0, klev0)
integer, parameter north_west
!$Id Turb_fcg!implicit none!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc!cette routine permet d obtenir hq et ainsi de!pouvoir calculer la convergence et le cisaillement dans la physiq!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc INTEGER klev REAL j
!$Header!CDK comgeom COMMON comgeom rlonu
!$Header!CDK comgeom COMMON comgeom rlatv
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