Changeset 1797 for LMDZ5/trunk
- Timestamp:
- Jul 18, 2013, 3:32:27 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/declare_STDlev.h
r1694 r1797 1 1 cIM for NMC files 2 real twriteSTD(klon,nlevSTD,nfiles)3 real qwriteSTD(klon,nlevSTD,nfiles)2 ! real twriteSTD(klon,nlevSTD,nfiles) 3 ! real qwriteSTD(klon,nlevSTD,nfiles) 4 4 real rhwriteSTD(klon,nlevSTD,nfiles) 5 real phiwriteSTD(klon,nlevSTD,nfiles)6 real uwriteSTD(klon,nlevSTD,nfiles)7 real vwriteSTD(klon,nlevSTD,nfiles)8 real wwriteSTD(klon,nlevSTD,nfiles)5 ! real phiwriteSTD(klon,nlevSTD,nfiles) 6 ! real uwriteSTD(klon,nlevSTD,nfiles) 7 ! real vwriteSTD(klon,nlevSTD,nfiles) 8 ! real wwriteSTD(klon,nlevSTD,nfiles) 9 9 10 10 real twriteSTD3(klon,nlevSTD3) -
LMDZ5/trunk/libf/phylmd/iophy.F90
r1791 r1797 4 4 module iophy 5 5 6 ! abd REAL,private,allocatable, dimension(:),save :: io_lat7 ! abd REAL,private,allocatable, dimension(:),save :: io_lon6 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lat 7 ! abd REAL,private,allocatable,DIMENSION(:),save :: io_lon 8 8 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lat 9 9 REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lon … … 24 24 25 25 26 contains 27 28 subroutine init_iophy_new(rlat,rlon) 26 CONTAINS 27 28 ! ug Routine pour définir itau_iophy depuis phys_output_write_mod: 29 SUBROUTINE set_itau_iophy(ito) 30 IMPLICIT NONE 31 INTEGER, INTENT(IN) :: ito 32 itau_iophy = ito 33 END SUBROUTINE 34 35 SUBROUTINE init_iophy_new(rlat,rlon) 29 36 USE dimphy 30 37 USE mod_phys_lmdz_para 31 38 USE mod_grid_phy_lmdz 32 39 USE ioipsl 33 implicit none34 include'dimensions.h'35 real,dimension(klon),intent(in) :: rlon36 real,dimension(klon),intent(in) :: rlat37 38 REAL, dimension(klon_glo) :: rlat_glo39 REAL, dimension(klon_glo) :: rlon_glo40 IMPLICIT NONE 41 INCLUDE 'dimensions.h' 42 REAL,DIMENSION(klon),INTENT(IN) :: rlon 43 REAL,DIMENSION(klon),INTENT(IN) :: rlat 44 45 REAL,DIMENSION(klon_glo) :: rlat_glo 46 REAL,DIMENSION(klon_glo) :: rlon_glo 40 47 41 48 INTEGER,DIMENSION(2) :: ddid … … 72 79 dpl=(/ iim, jj_end /) 73 80 dhs=(/ ii_begin-1,0 /) 74 if (mpi_rank==mpi_size-1) then81 IF (mpi_rank==mpi_size-1) THEN 75 82 dhe=(/0,0/) 76 else83 ELSE 77 84 dhe=(/ iim-ii_end,0 /) 78 endif79 80 callflio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &85 ENDIF 86 87 CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, & 81 88 'APPLE',phys_domain_id) 82 89 83 90 !$OMP END MASTER 84 91 85 end subroutineinit_iophy_new86 87 subroutineinit_iophy(lat,lon)88 USE dimphy 89 USE mod_phys_lmdz_para 90 useioipsl91 implicit none92 include'dimensions.h'93 real,dimension(iim),intent(in) :: lon94 real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat92 END SUBROUTINE init_iophy_new 93 94 SUBROUTINE init_iophy(lat,lon) 95 USE dimphy 96 USE mod_phys_lmdz_para 97 USE ioipsl 98 IMPLICIT NONE 99 INCLUDE 'dimensions.h' 100 REAL,DIMENSION(iim),INTENT(IN) :: lon 101 REAL,DIMENSION(jjm+1-1/(iim*jjm)),INTENT(IN) :: lat 95 102 96 103 INTEGER,DIMENSION(2) :: ddid … … 125 132 !$OMP END MASTER 126 133 127 end subroutineinit_iophy128 129 subroutinehistbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)134 end SUBROUTINE init_iophy 135 136 SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day) 130 137 USE dimphy 131 138 USE mod_phys_lmdz_para 132 139 use ioipsl 133 140 use write_field 134 implicit none141 IMPLICIT NONE 135 142 include 'dimensions.h' 136 143 137 character*(*), intent(IN) :: name138 integer, intent(in) :: itau0139 real,intent(in) :: zjulian140 real,intent(in) :: dtime144 character*(*), INTENT(IN) :: name 145 integer, INTENT(IN) :: itau0 146 REAL,INTENT(IN) :: zjulian 147 REAL,INTENT(IN) :: dtime 141 148 integer,intent(out) :: nhori 142 149 integer,intent(out) :: nid_day … … 152 159 !$OMP END MASTER 153 160 154 end subroutinehistbeg_phy155 156 subroutinehistbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &161 END SUBROUTINE histbeg_phy 162 163 SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, & 157 164 plon,plat,plon_bounds,plat_bounds, & 158 165 nname,itau0,zjulian,dtime,nnhori,nnid_day) … … 162 169 use ioipsl 163 170 use write_field 164 implicit none171 IMPLICIT NONE 165 172 include 'dimensions.h' 166 173 167 real,dimension(klon),intent(in) :: rlon168 real,dimension(klon),intent(in) :: rlat169 integer, intent(in) :: itau0170 real,intent(in) :: zjulian171 real,intent(in) :: dtime172 integer, intent(in) :: pim174 REAL,DIMENSION(klon),INTENT(IN) :: rlon 175 REAL,DIMENSION(klon),INTENT(IN) :: rlat 176 integer, INTENT(IN) :: itau0 177 REAL,INTENT(IN) :: zjulian 178 REAL,INTENT(IN) :: dtime 179 integer, INTENT(IN) :: pim 173 180 integer, intent(out) :: nnhori 174 character(len=20), intent(in) :: nname181 character(len=20), INTENT(IN) :: nname 175 182 INTEGER, intent(out) :: nnid_day 176 183 integer :: i 177 REAL, dimension(klon_glo) :: rlat_glo178 REAL, dimension(klon_glo) :: rlon_glo179 INTEGER, DIMENSION(pim), intent(in) :: tabij180 REAL, dimension(pim), intent(in) :: plat, plon181 INTEGER, dimension(pim), intent(in) :: ipt, jpt182 REAL, dimension(pim,2), intent(out) :: plat_bounds, plon_bounds184 REAL,DIMENSION(klon_glo) :: rlat_glo 185 REAL,DIMENSION(klon_glo) :: rlon_glo 186 INTEGER, DIMENSION(pim), INTENT(IN) :: tabij 187 REAL,DIMENSION(pim), INTENT(IN) :: plat, plon 188 INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt 189 REAL,DIMENSION(pim,2), intent(out) :: plat_bounds, plon_bounds 183 190 184 191 INTEGER, SAVE :: tabprocbeg, tabprocend … … 187 194 INTEGER, PARAMETER :: nip=1 188 195 INTEGER :: npproc 189 REAL, allocatable, dimension(:) :: npplat, npplon190 REAL, allocatable, dimension(:,:) :: npplat_bounds, npplon_bounds196 REAL, allocatable, DIMENSION(:) :: npplat, npplon 197 REAL, allocatable, DIMENSION(:,:) :: npplat_bounds, npplon_bounds 191 198 INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm 192 REAL, dimension(iim,jjmp1) :: zx_lon, zx_lat199 REAL, DIMENSION(iim,jjmp1) :: zx_lon, zx_lat 193 200 194 201 CALL gather(rlat,rlat_glo) … … 323 330 !$OMP END MASTER 324 331 325 end subroutinehistbeg_phy_points332 end SUBROUTINE histbeg_phy_points 326 333 327 334 SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field) … … 334 341 include 'iniprint.h' 335 342 336 integer, intent(in) :: nid337 logical, intent(in) :: lpoint338 character*(*), intent(IN) :: name339 integer, intent(in) :: itau340 real,dimension(:),intent(in) :: field341 REAL, dimension(klon_mpi) :: buffer_omp342 INTEGER, allocatable, dimension(:) :: index2d343 integer,INTENT(IN) :: nid 344 logical,INTENT(IN) :: lpoint 345 character*(*), INTENT(IN) :: name 346 integer, INTENT(IN) :: itau 347 REAL,DIMENSION(:),INTENT(IN) :: field 348 REAL,DIMENSION(klon_mpi) :: buffer_omp 349 INTEGER, allocatable, DIMENSION(:) :: index2d 343 350 REAL :: Field2d(iim,jj_nb) 344 351 345 352 integer :: ip 346 real,allocatable,dimension(:) :: fieldok347 348 349 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimensionnot equal to klon',1)353 REAL,allocatable,DIMENSION(:) :: fieldok 354 355 356 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 350 357 351 358 CALL Gather_omp(field,buffer_omp) … … 387 394 388 395 389 end subroutinehistwrite2d_phy_old390 391 subroutinehistwrite3d_phy_old(nid,lpoint,name,itau,field)396 end SUBROUTINE histwrite2d_phy_old 397 398 SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field) 392 399 USE dimphy 393 400 USE mod_phys_lmdz_para … … 395 402 396 403 use ioipsl 397 implicit none404 IMPLICIT NONE 398 405 include 'dimensions.h' 399 406 include 'iniprint.h' 400 407 401 integer, intent(in) :: nid402 logical, intent(in) :: lpoint403 character*(*), intent(IN) :: name404 integer, intent(in) :: itau405 real,dimension(:,:),intent(in) :: field ! --> field(klon,:)406 REAL, dimension(klon_mpi,size(field,2)) :: buffer_omp408 integer,INTENT(IN) :: nid 409 logical,INTENT(IN) :: lpoint 410 character*(*), INTENT(IN) :: name 411 integer, INTENT(IN) :: itau 412 REAL,DIMENSION(:,:),INTENT(IN) :: field ! --> field(klon,:) 413 REAL,DIMENSION(klon_mpi,size(field,2)) :: buffer_omp 407 414 REAL :: Field3d(iim,jj_nb,size(field,2)) 408 415 INTEGER :: ip, n, nlev 409 INTEGER, ALLOCATABLE, dimension(:) :: index3d410 real,allocatable, dimension(:,:) :: fieldok411 412 413 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimensionnot equal to klon',1)416 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 417 REAL,allocatable, DIMENSION(:,:) :: fieldok 418 419 420 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 414 421 nlev=size(field,2) 415 422 … … 460 467 !$OMP END MASTER 461 468 462 end subroutinehistwrite3d_phy_old469 end SUBROUTINE histwrite3d_phy_old 463 470 464 471 … … 480 487 include 'dimensions.h' 481 488 482 ! integer, intent(in) :: nid483 ! logical, intent(in) :: lpoint484 ! character*(*), intent(IN) :: name485 ! integer, intent(in) :: itau486 ! real,dimension(:),intent(in) :: field489 ! integer,INTENT(IN) :: nid 490 ! logical,INTENT(IN) :: lpoint 491 ! character*(*), INTENT(IN) :: name 492 ! integer, INTENT(IN) :: itau 493 ! REAL,DIMENSION(:),INTENT(IN) :: field 487 494 488 495 TYPE(ctrl_out), INTENT(IN) :: var … … 492 499 INTEGER :: iff, iff_beg, iff_end 493 500 494 REAL, dimension(klon_mpi) :: buffer_omp495 INTEGER, allocatable, dimension(:) :: index2d501 REAL,DIMENSION(klon_mpi) :: buffer_omp 502 INTEGER, allocatable, DIMENSION(:) :: index2d 496 503 REAL :: Field2d(iim,jj_nb) 497 504 … … 508 515 END IF 509 516 510 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimensionnot equal to klon',1)517 IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1) 511 518 512 519 CALL Gather_omp(field,buffer_omp) … … 578 585 include 'dimensions.h' 579 586 580 ! integer, intent(in) :: nid581 ! logical, intent(in) :: lpoint582 ! character*(*), intent(IN) :: name583 ! integer, intent(in) :: itau584 ! real,dimension(:,:),intent(in) :: field ! --> field(klon,:)587 ! integer,INTENT(IN) :: nid 588 ! logical,INTENT(IN) :: lpoint 589 ! character*(*), INTENT(IN) :: name 590 ! integer, INTENT(IN) :: itau 591 ! REAL,DIMENSION(:,:),INTENT(IN) :: field ! --> field(klon,:) 585 592 586 593 TYPE(ctrl_out), INTENT(IN) :: var … … 594 601 REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok 595 602 596 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimensionnot equal to klon',1)603 IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1) 597 604 nlev=size(field,2) 598 605 -
LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90
r1785 r1797 3 3 ! 4 4 MODULE phys_local_var_mod 5 6 5 ! Variables locales pour effectuer les appels en serie 7 6 !====================================================================== … … 187 186 !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop) 188 187 188 189 !Ajout de celles nécessaires au phys_output_write_mod 190 REAL, SAVE, ALLOCATABLE :: slp(:) 191 !$OMP THREADPRIVATE(slp) 192 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp 193 !$OMP THREADPRIVATE(sens, flwp, fiwp) 194 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils 195 !$OMP THREADPRIVATE(ale_wake, alp_wake, bils) 196 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh 197 !$OMP THREADPRIVATE(cdragm, cdragh) 198 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol 199 !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol) 200 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw 201 !$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw) 202 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m 203 !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) 204 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm 205 !$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm) 206 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils 207 !$OMP THREADPRIVATE(slab_wfbils) 208 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte 209 !$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte) 210 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving 211 !$OMP THREADPRIVATE(zxfqcalving) 212 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte 213 !$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte) 214 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc 215 !$OMP THREADPRIVATE(zxqsurf, rain_lsc) 216 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m 217 !$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m) 218 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion 219 !$OMP THREADPRIVATE(weak_inversion) 220 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det 221 !$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 222 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke 223 !$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke) 224 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2 225 !$OMP THREADPRIVATE(alp_bl_stat, n2, s2) 226 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig 227 !$OMP THREADPRIVATE(proba_notrig, random_notrig) 228 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo 229 !$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo) 230 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: t2m, fevap, fluxlat, fsollw,evap_pot 231 !$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot) 232 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega 233 !$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega) 234 ! REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th 235 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th 236 !$OMP THREADPRIVATE(lambda_th) 237 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc 238 !$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc) 239 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi 240 !$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi) 241 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh 242 !$OMP THREADPRIVATE(wake_omg, zx_rh) 243 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno 244 !$OMP THREADPRIVATE(frugs, agesno) 245 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca 246 !$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca) 247 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2 248 !$OMP THREADPRIVATE(Vprecip, zw2) 249 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu 250 !$OMP THREADPRIVATE(pmfd, pmfu) 251 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv 252 !$OMP THREADPRIVATE(fluxt, fluxu, fluxv) 253 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD 254 !$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD) 255 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD 256 !$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD) 257 258 ! ug et d'autres encore: 259 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM 260 !$OMP THREADPRIVATE(wdtrainA, wdtrainM) 261 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec 262 !$OMP THREADPRIVATE(beta_prec) 263 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb 264 !$OMP THREADPRIVATE(rneb) 265 189 266 CONTAINS 190 267 … … 195 272 USE aero_mod 196 273 USE indice_sol_mod 274 USE phys_output_var_mod 275 USE phys_state_var_mod 197 276 198 277 IMPLICIT NONE … … 279 358 ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp)) 280 359 360 ! FH Ajout de celles nécessaires au phys_output_write_mod 361 362 ALLOCATE(slp(klon)) 363 ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon)) 364 ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon)) 365 ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon)) 366 ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon)) 367 ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) 368 ALLOCATE(s_lcl(klon)) 369 ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon)) 370 ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon)) 371 ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon)) 372 ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon)) 373 ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon)) 374 ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon)) 375 ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon)) 376 ALLOCATE(sens(klon), flwp(klon), fiwp(klon)) 377 ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon)) 378 ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon)) 379 ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon)) 380 ALLOCATE(proba_notrig(klon), random_notrig(klon)) 381 382 ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev)) 383 ! ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev)) 384 ALLOCATE(upwd(klon, klev), omega(klon, klev)) 385 ! ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev)) 386 ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev)) 387 ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev)) 388 ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev)) 389 ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev)) 390 ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev)) 391 ALLOCATE(pmfd(klon, klev), pmfu(klon, klev)) 392 393 ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf)) 394 ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf)) 395 ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf)) 396 ALLOCATE(evap_pot(klon, nbsrf)) 397 398 ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1)) 399 ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1)) 400 ALLOCATE(zw2(klon, klev+1)) 401 402 ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf)) 403 ALLOCATE(fluxt(klon, klev, nbsrf)) 404 405 ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles)) 406 ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles)) 407 ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles)) 408 409 ! ug et d'autres encore: 410 ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev)) 411 ALLOCATE(beta_prec(klon,klev)) 412 ALLOCATE(rneb(klon,klev)) 413 414 281 415 END SUBROUTINE phys_local_var_init 282 416 … … 368 502 deallocate(topswcf_aerop, solswcf_aerop) 369 503 504 505 ! FH Ajout de celles nécessaires au phys_output_write_mod 506 DEALLOCATE(slp) 507 DEALLOCATE(ale_wake, alp_wake, bils) 508 DEALLOCATE(cdragm, cdragh, cldh, cldl) 509 DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol) 510 DEALLOCATE(dthmin, evap, fder, plcl, plfc) 511 DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl) 512 DEALLOCATE(s_pblh, s_pblt, s_therm) 513 DEALLOCATE(slab_wfbils, tpot, tpote, ue) 514 DEALLOCATE(uq, ve, vq, zxffonte) 515 DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs) 516 DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf) 517 DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th) 518 DEALLOCATE(zq2m, zt2m, weak_inversion) 519 DEALLOCATE(sens, flwp, fiwp) 520 DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det) 521 DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke) 522 DEALLOCATE(alp_bl_stat, n2, s2) 523 DEALLOCATE(proba_notrig, random_notrig) 524 525 DEALLOCATE(dnwd, dnwd0) 526 ! DEALLOCATE(upwd, omega, coefh) 527 DEALLOCATE(upwd, omega) 528 ! DEALLOCATE(coefm, lambda_th, cldemi) 529 DEALLOCATE(lambda_th, cldemi) 530 DEALLOCATE(cldfra, cldtau, fiwc) 531 DEALLOCATE(fl, re, flwc) 532 DEALLOCATE(ref_liq, ref_ice, theta) 533 DEALLOCATE(zphi, wake_omg, zx_rh) 534 DEALLOCATE(pmfd, pmfu) 535 536 DEALLOCATE(t2m, fevap, fluxlat) 537 DEALLOCATE(frugs, agesno, fsollw, evap_pot) 538 DEALLOCATE(fsolsw, wfbils, wfbilo) 539 540 DEALLOCATE(pmflxr, pmflxs, prfl) 541 DEALLOCATE(psfl, fraca, Vprecip) 542 DEALLOCATE(zw2) 543 544 DEALLOCATE(fluxu, fluxv) 545 DEALLOCATE(fluxt) 546 547 DEALLOCATE(uwriteSTD, vwriteSTD) 548 DEALLOCATE(wwriteSTD, phiwriteSTD) 549 DEALLOCATE(qwriteSTD, twriteSTD) 550 551 ! ug et d'autres encore: 552 DEALLOCATE(wdtrainA, wdtrainM) 553 DEALLOCATE(beta_prec) 554 DEALLOCATE(rneb) 555 370 556 END SUBROUTINE phys_local_var_end 371 557 -
LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90
r1791 r1797 50 50 !$OMP THREADPRIVATE(levmin, levmax) 51 51 52 LOGICAL, SAVE :: vars_defined = .TRUE. 53 !$OMP THREADPRIVATE(vars_defined) 54 52 55 TYPE ctrl_out 53 56 INTEGER,DIMENSION(nfiles) :: flag -
LMDZ5/trunk/libf/phylmd/phys_output_write_new.h
r1792 r1797 1 1 itau_w = itau_phy + itap + start_time * day_step / iphysiq 2 2 ! ug On transmet le pas de temps à iophy pour que les méthodes histwrite y aient accès: 3 itau_iophy = itau_w3 CALL set_itau_iophy(itau_w) 4 4 5 5 ndex2d = 0 -
LMDZ5/trunk/libf/phylmd/physiq.F
r1791 r1797 173 173 PARAMETER (ok_region=.FALSE.) 174 174 c====================================================================== 175 real weak_inversion(klon),dthmin(klon)176 175 real seuil_inversion 177 176 save seuil_inversion … … 184 183 REAL zz,znum,zden 185 184 REAL wmax_th(klon) 186 REAL zmax_th(klon)187 185 REAL tau_overturning_th(klon) 188 186 … … 220 218 REAL u(klon,klev) 221 219 REAL v(klon,klev) 222 REAL t(klon,klev),theta (klon,klev),thetal(klon,klev)220 REAL t(klon,klev),thetal(klon,klev) 223 221 c thetal: ligne suivante a decommenter si vous avez les fichiers MPL 20130625 224 222 c fth_fonctions.F90 et parkind1.F90 … … 227 225 REAL qx(klon,klev,nqtot) 228 226 REAL flxmass_w(klon,klev) 229 REAL omega(klon,klev) ! vitesse verticale en Pa/s230 227 REAL d_u(klon,klev) 231 228 REAL d_v(klon,klev) … … 242 239 real clw(klon,klev),elij(klon,klev,klev) 243 240 real epmlmMm(klon,klev,klev),eplaMm(klon,klev) 244 real wdtrainA(klon,klev),wdtrainM(klon,klev)245 241 ! RomP <<< 246 242 !IM definition dynamique o_trac dans phys_output_open … … 281 277 c 282 278 c 283 c prw: precipitable water284 real prw(klon)285 279 286 280 REAL convliq(klon,klev) ! eau liquide nuageuse convective … … 295 289 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) 296 290 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) 297 REAL flwp(klon), fiwp(klon)298 REAL flwc(klon,klev), fiwc(klon,klev)299 291 REAL flwp_c(klon), fiwp_c(klon) 300 292 REAL flwc_c(klon,klev), fiwc_c(klon,klev) … … 302 294 REAL flwc_s(klon,klev), fiwc_s(klon,klev) 303 295 304 REAL evap_pot(klon,nbsrf)305 296 306 297 cIM ISCCP simulator v3.4 … … 528 519 c$OMP THREADPRIVATE(itap) 529 520 c 530 real slp(klon) ! sea level pressure531 c532 REAL fevap(klon,nbsrf)533 REAL fluxlat(klon,nbsrf)534 c535 REAL qsol(klon)536 521 REAL,save :: solarlong0 537 522 c$OMP THREADPRIVATE(solarlong0) … … 544 529 c 545 530 INTEGER igwd,idx(klon),itest(klon) 546 c547 REAL agesno(klon,nbsrf)548 531 c 549 532 c REAL,allocatable,save :: run_off_lic_0(:) … … 565 548 566 549 REAL mip(klon,klev) ! mass flux shed by the adiab ascent at each level 567 REAL Vprecip(klon,klev+1) ! precipitation vertical profile568 550 c 569 551 REAL wape_prescr, fip_prescr … … 589 571 c$OMP THREADPRIVATE(wake_s_min_lsp) 590 572 591 real ale_wake(klon)592 real alp_wake(klon)593 573 594 574 real ok_wk_lsp(klon) … … 609 589 REAL wake_dtPBL(klon,klev) ! Wake : differential heating (wake - unpertubed) PBL 610 590 REAL wake_dqPBL(klon,klev) ! Wake : differential moistening (wake - unpertubed) PBL 611 REAL wake_omg(klon,klev) ! Wake : velocity difference (wake - unpertubed)612 591 REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev) 613 592 REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg … … 615 594 c 616 595 cpourquoi y'a pas de save?? 617 REAL wake_h(klon) ! Wake : hauteur de la poche froide618 596 c 619 597 INTEGER wake_k(klon) ! Wake sommet … … 645 623 cRR:fin declarations poches froides 646 624 c======================================================================================================= 647 648 REAL zw2(klon,klev+1) 649 REAL fraca(klon,klev+1) 625 650 626 REAL ztv(klon,klev),ztva(klon,klev) 651 627 REAL zpspsk(klon,klev) … … 665 641 real env_tke_max0(klon) ! TKE dans l'environnement au LCL 666 642 667 c---Spectre de thermiques de type 2 au LCL668 real n2(klon),s2(klon)669 real ale_bl_stat(klon)670 671 643 c---D\'eclenchement stochastique 672 644 integer :: tau_trig(klon) 673 real proba_notrig(klon)674 real random_notrig(klon)675 645 676 646 c--------Statistical Boundary Layer Closure: ALP_BL-------- … … 680 650 real env_tke_max(klon,klev) ! Profil de TKE dans l'environnement 681 651 682 c---Fermeture statistique683 real alp_bl_det(klon) ! ALP d\'terministe du thermique unique684 real alp_bl_fluct_m(klon) ! ALP li\'ee aux fluctuations de flux de masse sous-nuageux685 real alp_bl_fluct_tke(klon) ! ALP li\'ee aux fluctuations d'\'energie cin\'etique sous-nuageuse686 real alp_bl_conv(klon) ! ALP li\'ee \`a grande \'echelle687 real alp_bl_stat(klon) ! ALP totale688 652 689 653 ccc fin nrlmd le 10/04/2012 … … 697 661 c Variables locales: 698 662 c 699 REAL cdragh(klon) ! drag coefficient pour T and Q700 REAL cdragm(klon) ! drag coefficient pour vent701 663 cAA 702 664 cAA Pour phytrac 703 665 REAL u1(klon) ! vents dans la premiere couche U 704 666 REAL v1(klon) ! vents dans la premiere couche V 705 706 REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)707 667 708 668 c@$$ LOGICAL offline ! Controle du stockage ds "physique" … … 713 673 ! RomP >>> 714 674 REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt) 715 REAL beta_prec(klon,klev) ! taux de conv de l'eau cond (utilise)716 675 ! RomP <<< 717 676 INTEGER :: iii … … 722 681 c 723 682 cIM 050204 END 724 REAL evap(klon), devap(klon) ! evaporation et sa derivee 725 REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee 726 727 REAL bils(klon) ! bilan de chaleur au sol 728 729 REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque 730 C ! type de sous-surface et pondere par la fraction 731 REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque 732 C ! type de sous-surface et pondere par la fraction 733 REAL slab_wfbils(klon) ! bilan de chaleur au sol pour le cas de slab, sur les points d'ocean 734 735 REAL fder(klon) 736 REAL ve(klon) ! integr. verticale du transport meri. de l'energie 737 REAL vq(klon) ! integr. verticale du transport meri. de l'eau 738 REAL ue(klon) ! integr. verticale du transport zonal de l'energie 739 REAL uq(klon) ! integr. verticale du transport zonal de l'eau 740 c 741 REAL frugs(klon,nbsrf) 742 REAL zxrugs(klon) ! longueur de rugosite 683 REAL devap(klon) ! evaporation et sa derivee 684 REAL dsens(klon) ! chaleur sensible et sa derivee 685 743 686 c 744 687 c Conditions aux limites … … 804 747 REAL diafra(klon,klev) ! fraction nuageuse 805 748 REAL cldliq(klon,klev) ! eau liquide nuageuse 806 REAL cldfra(klon,klev) ! fraction nuageuse807 REAL cldtau(klon,klev) ! epaisseur optique808 REAL cldemi(klon,klev) ! emissivite infrarouge809 749 c 810 750 CXXX PB 811 751 REAL fluxq(klon,klev, nbsrf) ! flux turbulent d'humidite 812 REAL fluxt(klon,klev, nbsrf) ! flux turbulent de chaleur813 REAL fluxu(klon,klev, nbsrf) ! flux turbulent de vitesse u814 REAL fluxv(klon,klev, nbsrf) ! flux turbulent de vitesse v815 752 c 816 753 REAL zxfluxt(klon, klev) … … 818 755 REAL zxfluxu(klon, klev) 819 756 REAL zxfluxv(klon, klev) 820 CXXX 821 c 822 REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface 823 REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface 757 824 758 c Le rayonnement n'est pas calcule tous les pas, il faut donc 825 759 c sauvegarder les sorties du rayonnement … … 834 768 REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s) 835 769 REAL conv_t(klon,klev) ! convergence de la temperature(K/s) 836 c 837 REAL cldl(klon),cldm(klon),cldh(klon) !nuages bas, moyen et haut 838 REAL cldt(klon),cldq(klon) !nuage total, eau liquide integree 839 c 840 REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon) 770 771 c 772 REAL zxsnow(klon) 841 773 REAL zxsnow_dummy(klon) 842 774 c … … 857 789 REAL t_coup 858 790 PARAMETER (t_coup=234.0) 859 c 860 REAL zphi(klon,klev) 791 861 792 cym A voir plus tard !! 862 793 cym REAL zx_relief(iim,jjmp1) … … 864 795 c 865 796 c Grandeurs de sorties 866 REAL s_ pblh(klon), s_lcl(klon), s_capCL(klon)867 REAL s_oliqCL(klon), s_cteiCL(klon) , s_pblt(klon)868 REAL s_t herm(klon), s_trmb1(klon), s_trmb2(klon)797 REAL s_capCL(klon) 798 REAL s_oliqCL(klon), s_cteiCL(klon) 799 REAL s_trmb1(klon), s_trmb2(klon) 869 800 REAL s_trmb3(klon) 870 801 cKE43 871 802 c Variables locales pour la convection de K. Emanuel (sb): 872 c 873 REAL upwd(klon,klev) ! saturated updraft mass flux 874 REAL dnwd(klon,klev) ! saturated downdraft mass flux 875 REAL dnwd0(klon,klev) ! unsaturated downdraft mass flux 803 876 804 REAL tvp(klon,klev) ! virtual temp of lifted parcel 877 REAL plcl(klon) ! Lifting Condensation Level878 REAL plfc(klon) ! Level of Free Convection879 REAL wbeff(klon) ! saturated updraft velocity at LFC880 805 CHARACTER*40 capemaxcels !max(CAPE) 881 806 … … 902 827 c eva: evaporation de l'eau liquide nuageuse 903 828 c vdf: couche limite (Vertical DiFfusion) 904 REAL rneb(klon,klev)905 829 906 830 ! tendance nulles … … 914 838 cIM 081204 END 915 839 c 916 REAL pmfu(klon,klev), pmfd(klon,klev)917 840 REAL pen_u(klon,klev), pen_d(klon,klev) 918 841 REAL pde_u(klon,klev), pde_d(klon,klev) 919 842 INTEGER kcbot(klon), kctop(klon), kdtop(klon) 920 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)921 REAL prfl(klon,klev+1), psfl(klon,klev+1)922 c923 REAL rain_lsc(klon)924 REAL snow_lsc(klon)925 843 c 926 844 REAL ratqsc(klon,klev) … … 935 853 logical ok_newmicro 936 854 save ok_newmicro 937 real ref_liq(klon,klev), ref_ice(klon,klev)938 855 c$OMP THREADPRIVATE(ok_newmicro) 939 856 save fact_cldcon,facttemps … … 973 890 c Variables locales pour effectuer les appels en serie 974 891 c 975 REAL zx_rh(klon,klev)976 892 cIM RH a 2m (la surface) 977 REAL rh2m(klon), qsat2m(klon)978 REAL tpot(klon), tpote(klon)979 893 REAL Lheat 980 894 … … 1091 1005 REAL ZRCPD 1092 1006 c-jld ec_conser 1093 REAL t2m(klon,nbsrf) ! temperature a 2m1094 1007 REAL q2m(klon,nbsrf) ! humidite a 2m 1095 1008 1096 1009 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 1097 REAL zt2m(klon), zq2m(klon) !temp., hum. 2m moyenne s/ 1 maille1098 REAL zustar(klon),zu10m(klon), zv10m(klon) ! u* et vents a 10m moyennes s/1 maille1099 1010 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 1100 1011 CHARACTER*40 tinst, tave, typeval 1101 1012 REAL cldtaupi(klon,klev) ! Cloud optical thickness for pre-industrial (pi) aerosols 1102 1013 1103 REAL re(klon, klev) ! Cloud droplet effective radius1104 REAL fl(klon, klev) ! denominator of re1105 1014 1106 1015 REAL re_top(klon), fl_top(klon) ! CDR at top of liquid water clouds … … 1228 1137 ! Utilise notamment en 1D mais peut etre active egalement en 3D 1229 1138 ! en imposant la valeur de igout. 1230 c====================================================================== 1231 1139 c======================================================================d 1232 1140 if (prt_level.ge.1) then 1233 1141 igout=klon/2+1/klon … … 1250 1158 1251 1159 c====================================================================== 1252 1253 cym => necessaire pour iflag_con != 21254 pmfd(:,:) = 0.1255 pen_u(:,:) = 0.1256 pen_d(:,:) = 0.1257 pde_d(:,:) = 0.1258 pde_u(:,:) = 0.1259 aam=0.1260 1261 torsfc=0.1262 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg1263 1160 1264 1161 if (first) then … … 1301 1198 1302 1199 endif ! first 1200 1201 cym => necessaire pour iflag_con != 2 1202 pmfd(:,:) = 0. 1203 pen_u(:,:) = 0. 1204 pen_d(:,:) = 0. 1205 pde_d(:,:) = 0. 1206 pde_u(:,:) = 0. 1207 aam=0. 1208 1209 torsfc=0. 1210 forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1211 1212 1303 1213 1304 1214 modname = 'physiq'
Note: See TracChangeset
for help on using the changeset viewer.