Changeset 5927 for LMDZ6/trunk/libf
- Timestamp:
- Dec 12, 2025, 5:26:10 PM (6 weeks ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 23 edited
-
dyn3dmem/dynetat0_loc.f90 (modified) (2 diffs)
-
dynphy_lonlat/calfis.f90 (modified) (6 diffs)
-
dynphy_lonlat/calfis_loc.F90 (modified) (21 diffs)
-
dynphy_lonlat/phylmd/iniphysiq_mod.F90 (modified) (1 diff)
-
phylmd/infotrac_phy.F90 (modified) (3 diffs)
-
phylmd/pbl_surface_mod.F90 (modified) (29 diffs)
-
phylmd/phyetat0_mod.f90 (modified) (8 diffs)
-
phylmd/phyredem.f90 (modified) (3 diffs)
-
phylmd/phys_local_var_mod.F90 (modified) (6 diffs)
-
phylmd/phys_output_ctrlout_mod.F90 (modified) (3 diffs)
-
phylmd/phys_output_mod.F90 (modified) (13 diffs)
-
phylmd/phys_output_write_mod.F90 (modified) (6 diffs)
-
phylmd/phys_state_var_mod.F90 (modified) (4 diffs)
-
phylmd/physiq_mod.F90 (modified) (3 diffs)
-
phylmd/surf_land_mod.F90 (modified) (5 diffs)
-
phylmd/surf_land_orchidee_mod.F90 (modified) (8 diffs)
-
phylmd/surf_land_orchidee_nolic_mod.F90 (modified) (5 diffs)
-
phylmdiso/isotopes_routines_mod.F90 (modified) (21 diffs)
-
phylmdiso/phyaqua_mod.F90 (modified) (3 diffs)
-
phylmdiso/phyetat0_mod.F90 (modified) (4 diffs)
-
phylmdiso/phyredem.F90 (modified) (6 diffs)
-
phylmdiso/physiq_mod.F90 (modified) (18 diffs)
-
phylmdiso/reevap.F90 (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.f90
r5748 r5927 27 27 28 28 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 29 USE paramet_mod_h 30 IMPLICIT NONE 31 32 33 !=============================================================================== 29 USE paramet_mod_h 30 31 IMPLICIT NONE 32 33 34 !=============================================================================== 34 35 ! Arguments: 35 36 CHARACTER(LEN=*), INTENT(IN) :: fichnom !--- FILE NAME … … 188 189 tnat = 1.0 189 190 alpha_ideal = 1.0 190 CALL msg(' !!! Beware: alpha_ideal put to 1 !!!', modname)191 CALL msg(' !!! Beware: tnat and alpha_ideal put to 1 !!!', modname) 191 192 ELSE 192 193 SELECT CASE(isoName(iName)) -
LMDZ6/trunk/libf/dynphy_lonlat/calfis.f90
r5481 r5927 4 4 ! 5 5 ! 6 SUBROUTINE calfis(lafin, &7 jD_cur, jH_cur, &8 pucov,&9 pvcov,&10 pteta,&11 pq,&12 pmasse,&13 pps,&14 pp,&15 ppk,&16 pphis,&17 pphi,&18 pducov,&19 pdvcov,&20 pdteta,&21 pdq,&22 flxw,&23 pdufi,&24 pdvfi,&25 pdhfi,&26 pdqfi,&27 pdpsfi)6 SUBROUTINE calfis(lafin, & 7 jD_cur, jH_cur, & 8 pucov, & 9 pvcov, & 10 pteta, & 11 pq, & 12 pmasse, & 13 pps, & 14 pp, & 15 ppk, & 16 pphis, & 17 pphi, & 18 pducov, & 19 pdvcov, & 20 pdteta, & 21 pdq, & 22 flxw, & 23 pdufi, & 24 pdvfi, & 25 pdhfi, & 26 pdqfi, & 27 pdpsfi) 28 28 ! 29 29 ! Auteur : P. Le Van, F. Hourdin … … 177 177 debut = .TRUE. 178 178 IF (ngridmx.NE.2+(jjm-1)*iim) THEN 179 write(lunout,*) 'STOP dans calfis'180 write(lunout,*) &179 write(lunout,*) 'STOP dans calfis' 180 write(lunout,*) & 181 181 'La dimension ngridmx doit etre egale a 2 + (jjm-1)*iim' 182 write(lunout,*) ' ngridmx jjm iim '183 write(lunout,*) ngridmx,jjm,iim184 call abort_gcm("calfis", "", 1)182 write(lunout,*) ' ngridmx jjm iim ' 183 write(lunout,*) ngridmx,jjm,iim 184 call abort_gcm("calfis", "", 1) 185 185 ENDIF 186 186 ELSE … … 368 368 do i=1,iim 369 369 do j=1,jjm 370 zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l) &371 + pucov(i,j+1,l) - pucov(i,j,l)) &372 / (cu(i,j)+cu(i,j+1)) &373 / (cv(i+1,j)+cv(i,j)) *4370 zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l) & 371 + pucov(i,j+1,l) - pucov(i,j,l)) & 372 / (cu(i,j)+cu(i,j+1)) & 373 / (cv(i+1,j)+cv(i,j)) *4 374 374 enddo 375 375 enddo … … 481 481 ! if (planet_type=="earth") then 482 482 CALL call_physiq(ngridmx,llm,nqtot,tracers(:)%name, & 483 debut_split,lafin_split, &484 jD_cur,jH_cur_split,zdt_split, &485 zplev,zplay, &486 zpk,zphi,zphis, &487 presnivs, &488 zufi,zvfi,zrfi,ztfi,zqfi, &489 flxwfi,pducov, &490 zdufi,zdvfi,zdtfi,zdqfi,zdpsrf)483 debut_split,lafin_split, & 484 jD_cur,jH_cur_split,zdt_split, & 485 zplev,zplay, & 486 zpk,zphi,zphis, & 487 presnivs, & 488 zufi,zvfi,zrfi,ztfi,zqfi, & 489 flxwfi,pducov, & 490 zdufi,zdvfi,zdtfi,zdqfi,zdpsrf) 491 491 ! 492 492 ! else if ( planet_type=="generic" ) then … … 539 539 540 540 541 500 CONTINUE 541 !!SN 500 CONTINUE !not used 542 542 543 543 !----------------------------------------------------------------------- … … 678 678 !----------------------------------------------------------------------- 679 679 680 700 CONTINUE 680 !! SN 700 CONTINUE !not used 681 681 682 682 firstcal = .FALSE. -
LMDZ6/trunk/libf/dynphy_lonlat/calfis_loc.F90
r5481 r5927 54 54 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 55 55 USE paramet_mod_h 56 56 57 IMPLICIT NONE 58 57 59 !======================================================================= 58 60 ! … … 184 186 ! Introduction du splitting (FH) 185 187 ! Question pour Yann : 186 ! J'ai �t� surpris au d�but que les tableaux zufi_omp, zdufi_omp n'co soitent187 ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'il 188 ! soi t allocatable (plutot par exemple que de passer une dimension189 ! d �pendant du process en argument des routines) et que, du coup,190 ! le SAVE �vite d'avoir � refaire l'allocation �chaque appel.188 ! J'ai ete surpris au debut que les tableaux zufi_omp, zdufi_omp n'co soient 189 ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'ils 190 ! soient allocatable (plutot par exemple que de passer une dimension 191 ! dependant du process en argument des routines) et que, du coup, 192 ! le SAVE evite d'avoir a refaire l'allocation a chaque appel. 191 193 ! Tu confirmes ? 192 ! J'ai suivi le m �me principe pour les zdufic_omp194 ! J'ai suivi le meme principe pour les zdufic_omp 193 195 ! Mais c'est surement bien que tu controles. 194 196 ! … … 253 255 ENDIF 254 256 !$OMP MASTER 255 ALLOCATE(zpsrf(klon))256 ALLOCATE(zplev(klon,llm+1),zplay(klon,llm))257 ALLOCATE(zphi(klon,llm),zphis(klon))258 ALLOCATE(zufi(klon,llm), zvfi(klon,llm),zrfi(klon,llm))259 ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))260 ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))261 ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))262 ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))263 ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot))264 ALLOCATE(zdpsrf(klon))265 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))266 ALLOCATE(flxwfi(klon,llm))267 ALLOCATE(zpk(klon,llm))257 ALLOCATE(zpsrf(klon)) 258 ALLOCATE(zplev(klon,llm+1),zplay(klon,llm)) 259 ALLOCATE(zphi(klon,llm),zphis(klon)) 260 ALLOCATE(zufi(klon,llm), zvfi(klon,llm),zrfi(klon,llm)) 261 ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot)) 262 ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm)) 263 ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2)) 264 ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm)) 265 ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot)) 266 ALLOCATE(zdpsrf(klon)) 267 ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm)) 268 ALLOCATE(flxwfi(klon,llm)) 269 ALLOCATE(zpk(klon,llm)) 268 270 !$OMP END MASTER 269 271 !$OMP BARRIER 270 272 ELSE 271 debut = .FALSE.273 debut = .FALSE. 272 274 ENDIF 273 275 … … 282 284 283 285 !$OMP MASTER 284 callstart_timer(timer_physic)286 CALL start_timer(timer_physic) 285 287 !$OMP END MASTER 286 288 … … 288 290 !CDIR ON_ADB(index_i) 289 291 !CDIR ON_ADB(index_j) 290 doig0=1,klon292 DO ig0=1,klon 291 293 i=index_i(ig0) 292 294 j=index_j(ig0) 293 295 zpsrf(ig0)=pps(i,j) 294 enddo296 ENDDO 295 297 !$OMP END MASTER 296 298 … … 312 314 !CDIR ON_ADB(index_i) 313 315 !CDIR ON_ADB(index_j) 314 doig0=1,klon316 DO ig0=1,klon 315 317 i=index_i(ig0) 316 318 j=index_j(ig0) 317 319 zplev( ig0,l ) = pp(i,j,l) 318 enddo320 ENDDO 319 321 ENDDO 320 322 !$OMP END DO NOWAIT … … 322 324 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 323 325 DO l=1,llm 324 doig0=1,klon326 DO ig0=1,klon 325 327 i=index_i(ig0) 326 328 j=index_j(ig0) 327 329 zpk(ig0,l)=ppk(i,j,l) 328 enddo330 ENDDO 329 331 ENDDO 330 332 !$OMP END DO NOWAIT … … 339 341 !CDIR ON_ADB(index_i) 340 342 !CDIR ON_ADB(index_j) 341 doig0=1,klon343 DO ig0=1,klon 342 344 i=index_i(ig0) 343 345 j=index_j(ig0) … … 345 347 zplay(ig0,l) = preff * pksurcp ** unskap 346 348 ztfi(ig0,l) = pteta(i,j,l) * pksurcp 347 enddo349 ENDDO 348 350 349 351 ENDDO … … 362 364 !CDIR ON_ADB(index_i) 363 365 !CDIR ON_ADB(index_j) 364 doig0=1,klon366 DO ig0=1,klon 365 367 i=index_i(ig0) 366 368 j=index_j(ig0) 367 369 zqfi(ig0,l,itr) = pq(i,j,l,iq) 368 enddo370 ENDDO 369 371 ENDDO 370 372 !$OMP END DO NOWAIT … … 376 378 377 379 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 378 DO l=1,llm 379 !CDIR ON_ADB(index_i) 380 !CDIR ON_ADB(index_j) 381 do ig0=1,klon 382 i=index_i(ig0) 383 j=index_j(ig0) 384 zphi(ig0,l) = pphi(i,j,l) 385 enddo 380 DO l=1,llm 381 !CDIR ON_ADB(index_i) 382 !CDIR ON_ADB(index_j) 383 DO ig0=1,klon 384 i=index_i(ig0) 385 j=index_j(ig0) 386 zphi(ig0,l) = pphi(i,j,l) 386 387 ENDDO 388 ENDDO 387 389 !$OMP END DO NOWAIT 388 390 … … 392 394 !CDIR ON_ADB(index_i) 393 395 !CDIR ON_ADB(index_j) 394 doig0=1,klon395 i=index_i(ig0)396 j=index_j(ig0)397 zphis(ig0) = pphis(i,j)398 enddo396 DO ig0=1,klon 397 i=index_i(ig0) 398 j=index_j(ig0) 399 zphis(ig0) = pphis(i,j) 400 ENDDO 399 401 !$OMP END MASTER 400 402 … … 458 460 do j=jjb,jje 459 461 zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l) & 460 + pucov(i,j+1,l) - pucov(i,j,l)) &461 / (cu(i,j)+cu(i,j+1)) &462 / (cv(i+1,j)+cv(i,j)) *4462 + pucov(i,j+1,l) - pucov(i,j,l)) & 463 / (cu(i,j)+cu(i,j+1)) & 464 / (cv(i+1,j)+cv(i,j)) *4 463 465 enddo 464 466 enddo … … 477 479 j=index_j(ig0) 478 480 zvfi(ig0,l)= 0.5 *( pvcov(i,j-1,l)/cv(i,j-1) & 479 + pvcov(i,j,l)/cv(i,j) )481 + pvcov(i,j,l)/cv(i,j) ) 480 482 if (j==1 .OR. j==jjp1) then ! AdlC MAY 2014 481 483 zrfi(ig0,l) = 0 ! AdlC MAY 2014 … … 483 485 if(i==1)then 484 486 zrfi(ig0,l)= 0.25 *(zrot(iim,j-1,l)+zrot(iim,j,l) & 485 +zrot(1,j-1,l)+zrot(1,j,l)) ! AdlC MAY 2014487 +zrot(1,j-1,l)+zrot(1,j,l)) ! AdlC MAY 2014 486 488 else 487 489 zrfi(ig0,l)= 0.25 *(zrot(i-1,j-1,l)+zrot(i-1,j,l) & 488 +zrot(i,j-1,l)+zrot(i,j,l)) ! AdlC MAY 2014490 +zrot(i,j-1,l)+zrot(i,j,l)) ! AdlC MAY 2014 489 491 endif 490 492 endif … … 722 724 723 725 CALL call_physiq(klon,llm,nqtot,tracers(:)%name, & 724 debut_split,lafin_split, &725 jD_cur,jH_cur_split,zdt_split, &726 zplev_omp,zplay_omp, &727 zpk_omp,zphi_omp,zphis_omp, &728 presnivs_omp, &729 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, &730 flxwfi_omp,pducov, &731 zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp, &732 zdpsrf_omp)726 debut_split,lafin_split, & 727 jD_cur,jH_cur_split,zdt_split, & 728 zplev_omp,zplay_omp, & 729 zpk_omp,zphi_omp,zphis_omp, & 730 presnivs_omp, & 731 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, & 732 flxwfi_omp,pducov, & 733 zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp, & 734 zdpsrf_omp) 733 735 734 736 … … 842 844 843 845 klon=klon_mpi 844 500 CONTINUE 846 847 !!SN 500 CONTINUE !not used 848 845 849 !$OMP BARRIER 846 850 … … 1105 1109 1106 1110 if (i==1) then 1107 pdufi(iim,j,l)=0.5*( zdufi2(ig0,l) &1108 + zdufi2(ig0+iim-1,l))*cu(iim,j)1111 pdufi(iim,j,l)=0.5*( zdufi2(ig0,l) & 1112 + zdufi2(ig0+iim-1,l))*cu(iim,j) 1109 1113 pdufi(iip1,j,l)=0.5*(zdufi2(ig0,l)+zdufi2(ig0+1,l))*cu(i,j) 1110 1114 endif … … 1145 1149 j=index_j(ig0) 1146 1150 pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j) 1147 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ & 1148 zdvfi2(ig0+iim,l)) & 1149 *cv(i,j) 1151 if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l) & 1152 + zdvfi2(ig0+iim,l))*cv(i,j) 1150 1153 enddo 1151 1154 … … 1185 1188 DO i=1,iim 1186 1189 pdvfi(i,jjm,l)=zdufi(klon,l)*COS(rlonv(i)) & 1187 +zdvfi(klon,l)*SIN(rlonv(i))1190 +zdvfi(klon,l)*SIN(rlonv(i)) 1188 1191 1189 1192 pdvfi(i,jjm,l)= & … … 1199 1202 !----------------------------------------------------------------------- 1200 1203 1201 700 CONTINUE 1204 !!SN 700 CONTINUE !not used 1202 1205 1203 1206 firstcal = .FALSE. -
LMDZ6/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r5786 r5927 46 46 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_INCA, CPPKEY_REPROBUS 47 47 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 48 USE paramet_mod_h 49 IMPLICIT NONE 48 USE paramet_mod_h 49 50 IMPLICIT NONE 50 51 51 52 ! ======================================================================= -
LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
r5777 r5927 252 252 !============================================================================================================================== 253 253 nqtrue = SIZE(tracers) !--- "true" tracers 254 nqo = COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%name) == 'H2O') !-- Water phases254 nqo = COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%name) == 'H2O') !--- Water phases 255 255 nqtke = COUNT(tracers(:)%component == 'lmdz' .AND. tracers(:)%name == 'TKE') !--- TKE tracers 256 256 nbtr = nqtrue-COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%gen0Name) == 'H2O') !--- Passed to phytrac … … 322 322 CALL MOVE_ALLOC(FROM=ttr, TO=tracers) 323 323 324 !--- SET FIELDS iqParent, iqDescen, nqDescen, nqChildren 324 !--- SET FIELDS iqParent, iqDescen, nqDescen, nqChildren, iGeneration 325 325 IF(indexUpdate(tracers)) CALL abort_physic(modname, 'problem with tracers indices update', 1) 326 326 327 327 !=== DETERMINE ISOTOPES RELATED PARAMETERS ; DEFINE THE EXPLICIT KEYS iso_i* 328 328 IF(processIsotopes()) CALL abort_physic(modname, 'Problem when processing isotopes parameters', 1) 329 !!SN do we really need to call isoSelect('H2O',.TRUE.) in processIsotopes and here ? 329 330 iH2O = -1 330 331 IF(nbIso /= 0) THEN … … 415 416 CALL msg(' isoPhas = '//TRIM(isoPhas), modname) 416 417 END DO 418 !!SN do we need to call isoSelect(iH2O, .TRUE.) three times ? 417 419 IF(isoSelect(iH2O, .TRUE.)) lerr = isoSelect(1, .TRUE.) 418 420 -
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r5894 r5927 34 34 USE config_ocean_skin_m, ONLY : activate_ocean_skin 35 35 #ifdef ISO 36 USE infotrac_phy, ONLY: niso,ntraciso=>ntiso 36 USE infotrac_phy, ONLY: niso,ntraciso=>ntiso 37 USE phys_local_var_mod, ONLY: Rsol !! SN soil isotope ratio for LMDZORISO 37 38 #endif 38 39 … … 61 62 62 63 #ifdef ISO 63 REAL, ALLOCATABLE, DIMENSION(:,:,:), PRIVATE,SAVE :: xtsnow ! snow at surface64 REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: xtsnow ! snow at surface 64 65 !$OMP THREADPRIVATE(xtsnow) 65 REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE :: Rland_ice ! snow at surface66 REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: Rland_ice ! ice bucket bellow snowpack 66 67 !$OMP THREADPRIVATE(Rland_ice) 67 REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE :: Roce ! snow at surface68 REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE :: Roce 68 69 !$OMP THREADPRIVATE(Roce) 69 70 #endif … … 91 92 !GG 92 93 ! SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst) 93 SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst, hice_rst, tice_rst,bilg_cumul_rst)94 SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst, hice_rst, tice_rst, bilg_cumul_rst) 94 95 !GG 95 96 … … 234 235 235 236 #ifdef ISO 236 SUBROUTINE pbl_surface_init_iso(xtsnow_rst,Rland_ice_rst )237 SUBROUTINE pbl_surface_init_iso(xtsnow_rst,Rland_ice_rst,Rsol_rst) 237 238 238 239 ! This routine should be called after the restart file has been read. … … 251 252 ! Input variables 252 253 !**************************************************************************************** 253 REAL, DIMENSION(niso,klon, nbsrf), INTENT(IN) :: xtsnow_rst254 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice_rst 254 REAL, DIMENSION(niso,klon, nbsrf), INTENT(IN) :: xtsnow_rst 255 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice_rst, Rsol_rst 255 256 256 257 ! Local variables … … 259 260 CHARACTER(len=80) :: abort_message 260 261 CHARACTER(len = 20) :: modname = 'pbl_surface_init' 261 integeri,ixt262 INTEGER :: i,ixt 262 263 263 264 !**************************************************************************************** … … 277 278 xtsnow(:,:,:) = xtsnow_rst(:,:,:) 278 279 Rland_ice(:,:) = Rland_ice_rst(:,:) 280 Rsol(:,:) = Rsol_rst(:,:) 279 281 Roce(:,:) = 0.0 280 282 … … 283 285 CALL iso_verif_egalite_vect2D( & 284 286 & xtsnow,snow, & 285 & 'pbl_surface_mod 170',niso,klon,nbsrf)287 & 'pbl_surface_mod 286',niso,klon,nbsrf) 286 288 DO i=1,klon 287 289 IF (iso_eau >= 0) THEN 288 290 CALL iso_verif_egalite(Rland_ice(iso_eau,i),1.0, & 289 & 'pbl_surf_mod 177') 291 & 'pbl_surf_mod 290') 292 CALL iso_verif_egalite(Rsol(iso_eau,i),1.0, & 293 & 'pbl_surf_mod 292') 290 294 ENDIF 291 295 ENDDO … … 371 375 !!! 372 376 #ifdef ISO 373 & ,xtrain_f, xtsnow_f,xt, &377 & ,xtrain_f,xtsnow_f,xt, & 374 378 & wake_dlxt,zxxtevap,xtevap, & 375 379 & d_xt,d_xt_w,d_xt_x, & 376 380 & xtsol,dflux_xt,zxxtsnow,zxfluxxt,flux_xt, & 377 & h1_diag,runoff_diag,xtrunoff_diag & 381 & h1_diag,runoff_diag,xtrunoff_diag, & 382 & xtriverflow,xtcoastalflow & 378 383 #endif 379 384 & ) … … 458 463 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, carbon_cycle_tr, level_coupling_esm 459 464 USE carbon_cycle_mod, ONLY : co2_send, nbcf_out, fields_out, yfields_out, cfname_out 460 use hbtm_mod, only: hbtm465 USE hbtm_mod, ONLY : hbtm 461 466 USE indice_sol_mod 462 467 USE time_phylmdz_mod, ONLY : day_ini,annee_ref,itau_phy … … 464 469 USE print_control_mod, ONLY : prt_level,lunout 465 470 #ifdef ISO 466 USE isotopes_mod, ONLY: Rdefault,iso_eau471 USE isotopes_mod, ONLY: Rdefault,iso_eau 467 472 #ifdef ISOVERIF 468 USE isotopes_verif_mod473 USE isotopes_verif_mod 469 474 #endif 470 475 #ifdef ISOTRAC 471 USE isotrac_mod, only: index_iso472 #endif 473 #endif 474 USE dimpft_mod_h476 USE isotrac_mod, ONLY: index_iso 477 #endif 478 #endif 479 USE dimpft_mod_h 475 480 USE flux_arp_mod_h 476 481 USE compbl_mod_h 477 482 USE yoethf_mod_h 478 USE clesphys_mod_h483 USE clesphys_mod_h 479 484 USE ioipsl_getin_p_mod, ONLY : getin_p 480 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, &485 USE phys_state_var_mod, ONLY : ds_ns, dt_ns, delta_sst, delta_sal, dter, & 481 486 dser, dt_ds, zsig, zmea, & 482 487 frac_tersrf, z0m_tersrf, ratio_z0m_z0h_tersrf, albedo_tersrf !AM 483 use phys_output_var_mod, only: tkt, tks, taur, sss484 use lmdz_blowing_snow_ini, only: zeta_bs485 use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios486 USE netcdf, only: missing_val_netcdf => nf90_fill_real487 USE dimsoil_mod_h, ONLY : nsoilmx488 USE surf_param_mod, ONLY : eff_surf_param !AM488 USE phys_output_var_mod, ONLY : tkt, tks, taur, sss 489 USE lmdz_blowing_snow_ini, ONLY : zeta_bs 490 USE wxios_mod, ONLY : missing_val_xios => missing_val, using_xios 491 USE netcdf, ONLY : missing_val_netcdf => nf90_fill_real 492 USE dimsoil_mod_h, ONLY : nsoilmx 493 USE surf_param_mod, ONLY : eff_surf_param !AM 489 494 490 495 USE yomcst_mod_h 491 IMPLICIT NONE 496 497 IMPLICIT NONE 492 498 493 499 INCLUDE "FCTTRE.h" … … 619 625 #ifdef ISO 620 626 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: zxxtevap ! water vapour flux at surface, positiv upwards 621 REAL, DIMENSION(ntraciso,klon, klev), INTENT(OUT) :: d_xt ! change in water vapour627 REAL, DIMENSION(ntraciso,klon, klev), INTENT(OUT) :: d_xt ! change in water vapour 622 628 REAL, DIMENSION(klon), INTENT(OUT) :: runoff_diag 623 629 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtrunoff_diag 630 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtriverflow ! PRSN LMDZORISO variables 631 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtcoastalflow ! PRSN Fin 624 632 REAL, DIMENSION(ntraciso,klon,klev), INTENT(OUT) :: d_xt_w 625 633 REAL, DIMENSION(ntraciso,klon,klev), INTENT(OUT) :: d_xt_x … … 794 802 REAL, DIMENSION(niso,klon) :: yxtrunoff_diag 795 803 REAL, DIMENSION(niso,klon) :: yRland_ice 804 REAL, DIMENSION(niso,klon) :: yxtriverflow 805 REAL, DIMENSION(niso,klon) :: yxtcoastalflow 806 REAL, DIMENSION(niso,klon) :: yRsol 796 807 #endif 797 808 REAL, DIMENSION(klon) :: ysolsw, ysollw … … 804 815 REAL, DIMENSION(klon) :: y_dflux_t, y_dflux_q 805 816 #ifdef ISO 806 REAL, DIMENSION(ntraciso,klon) :: y_flux_xt1807 REAL, DIMENSION(ntraciso,klon) :: y_dflux_xt817 REAL, DIMENSION(ntraciso,klon) :: y_flux_xt1 818 REAL, DIMENSION(ntraciso,klon) :: y_dflux_xt 808 819 #endif 809 820 REAL, DIMENSION(klon) :: y_flux_u1, y_flux_v1 … … 1197 1208 DO i=1,klon 1198 1209 DO ixt=1,niso 1199 CALL iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 608')1210 CALL iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 1209') 1200 1211 ENDDO 1201 1212 ENDDO … … 1205 1216 IF (iso_eau >= 0) THEN 1206 1217 CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 1207 & 'pbl_surf_mod 585',errmax,errmaxrel)1218 & 'pbl_surf_mod 1216',errmax,errmaxrel) 1208 1219 CALL iso_verif_egalite_choix(xtsnow_f(iso_eau,i),snow_f(i), & 1209 & 'pbl_surf_mod 594',errmax,errmaxrel)1220 & 'pbl_surf_mod 1218',errmax,errmaxrel) 1210 1221 IF (iso_verif_egalite_choix_nostop(xtsol(iso_eau,i),qsol(i), & 1211 & 'pbl_surf_mod 596',errmax,errmaxrel) == 1) THEN1222 & 'pbl_surf_mod 1220',errmax,errmaxrel) == 1) THEN 1212 1223 WRITE(*,*) 'i=',i 1213 1224 STOP … … 1215 1226 DO nsrf=1,nbsrf 1216 1227 CALL iso_verif_egalite_choix(xtsnow(iso_eau,i,nsrf),snow(i,nsrf), & 1217 & 'pbl_surf_mod 598',errmax,errmaxrel)1228 & 'pbl_surf_mod 1226',errmax,errmaxrel) 1218 1229 ENDDO 1219 1230 ENDIF !IF (iso_eau >= 0) THEN … … 1223 1234 IF (iso_eau >= 0) THEN 1224 1235 CALL iso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), & 1225 & 'pbl_surf_mod 595',errmax,errmaxrel)1236 & 'pbl_surf_mod 1234',errmax,errmaxrel) 1226 1237 ENDIF !IF (iso_eau >= 0) THEN 1227 1238 ENDDO !DO i=1,knon … … 1460 1471 flux_xt = 0.0 1461 1472 yRland_ice = 0.0 1473 yrunoff_diag = 0.0 1474 yxtrunoff_diag = 0.0 1475 yxtriverflow = 0.0 1476 yxtcoastalflow = 0.0 1477 yRsol = 0.0 1462 1478 ! d_xt = 0.0 1463 1479 y_dflux_xt = 0.0 … … 1821 1837 !IF (nsrf == is_lic) THEN 1822 1838 DO ixt=1,niso 1823 yRland_ice(ixt,j)= Rland_ice(ixt,i) 1839 yRland_ice(ixt,j) = Rland_ice(ixt,i) 1840 yxtriverflow(ixt,j) = xtriverflow(ixt,i) 1841 yxtcoastalflow(ixt,j)= xtcoastalflow(ixt,i) 1842 yRsol(ixt,j) = Rsol(ixt,i) 1824 1843 ENDDO 1825 1844 !endif !IF (nsrf == is_lic) THEN … … 2586 2605 & ,yxtrain_f, yxtsnow_f,yxt1, & 2587 2606 & yxtsnow,yxtsol,yxtevap,h1, & 2588 & yrunoff_diag,yxtrunoff_diag,yRland_ice & 2607 & yrunoff_diag,yxtrunoff_diag,yRland_ice, & 2608 & yxtriverflow,yxtcoastalflow,yRsol & 2589 2609 #endif 2590 2610 & ) … … 2658 2678 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 2659 2679 ysnow, yqsurf, yqsol,yqbs1, yagesno, & 2660 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub_lic, yfluxsens, yfluxlat, &2680 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub_lic, yfluxsens, yfluxlat, & 2661 2681 yfluxbs, ytsurf_new, y_dflux_t, y_dflux_q, & 2662 2682 yzmea, yzsig, ycldt, & … … 2696 2716 DO ixt=1,ntraciso 2697 2717 CALL iso_verif_noNaN(yxtevap(ixt,j), & 2698 & 'pbl_surface 1095a: apres surf_landice')2718 & 'pbl_surface 2716a: apres surf_landice') 2699 2719 ENDDO 2700 doixt=1,niso2701 calliso_verif_noNaN(yxtsol(ixt,j), &2702 & 'pbl_surface 1095b: apres surf_landice')2703 enddo2704 enddo2720 DO ixt=1,niso 2721 CALL iso_verif_noNaN(yxtsol(ixt,j), & 2722 & 'pbl_surface 2720b: apres surf_landice') 2723 ENDDO 2724 ENDDO 2705 2725 #endif 2706 2726 #ifdef ISOVERIF 2707 2727 !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice' 2708 doj=1,knon2728 DO j=1,knon 2709 2729 IF (iso_eau >= 0) THEN 2710 2730 CALL iso_verif_egalite(yxtsnow(iso_eau,j), & 2711 & ysnow(j),'pbl_surf_mod 1064')2731 & ysnow(j),'pbl_surf_mod 2729') 2712 2732 ENDIF !if (iso_eau >= 0) THEN 2713 2733 ENDDO !DO i=1,klon … … 3464 3484 dflux_q(i) = dflux_q(i) + y_dflux_q(j)*ypct(j) 3465 3485 #ifdef ISO 3466 DO ixt=1,niso3467 xtsnow(ixt,i,nsrf) = yxtsnow(ixt,j)3468 ENDDO3469 DO ixt=1,ntraciso3470 xtevap(ixt,i,nsrf) = - flux_xt(ixt,i,1,nsrf)3471 dflux_xt(ixt,i) = dflux_xt(ixt,i) + y_dflux_xt(ixt,j)*ypct(j)3472 ENDDO3473 IF (nsrf == is_lic) THEN3474 3486 DO ixt=1,niso 3475 Rland_ice(ixt,i) = yRland_ice(ixt,j) 3476 ENDDO 3477 ENDIF !IF (nsrf == is_lic) THEN 3487 xtsnow(ixt,i,nsrf) = yxtsnow(ixt,j) 3488 ENDDO 3489 DO ixt=1,ntraciso 3490 xtevap(ixt,i,nsrf) = - flux_xt(ixt,i,1,nsrf) 3491 dflux_xt(ixt,i) = dflux_xt(ixt,i) + y_dflux_xt(ixt,j)*ypct(j) 3492 ENDDO 3493 IF (nsrf == is_lic) THEN 3494 DO ixt=1,niso 3495 Rland_ice(ixt,i) = yRland_ice(ixt,j) 3496 ENDDO 3497 ENDIF !IF (nsrf == is_lic) THEN 3498 IF (nsrf == is_ter) THEN 3499 DO ixt=1,niso 3500 xtriverflow(ixt,i) = yxtriverflow(ixt,j) 3501 xtcoastalflow(ixt,i)= yxtcoastalflow(ixt,j) 3502 Rsol(ixt,i) = yRsol(ixt,j) 3503 ENDDO 3504 ENDIF !IF (nsrf == is_ter) THEN 3478 3505 #ifdef ISOVERIF 3479 IF (iso_eau.gt.0) THEN 3480 call iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 3481 & 'pbl_surf_mod 1230',errmax,errmaxrel) 3482 ENDIF !if (iso_eau.gt.0) then 3506 IF (iso_eau.GT.0) THEN 3507 CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, & 3508 & 'pbl_surf_mod 3506',errmax,errmaxrel) 3509 CALL iso_verif_egalite_choix(Rsol(iso_eau,i),1.0, & 3510 & 'pbl_surf_mod 3508',errmax,errmaxrel) 3511 ENDIF !if (iso_eau.gt.0) then 3483 3512 #endif 3484 3513 #endif … … 4409 4438 SUBROUTINE pbl_surface_final(fder_rst, snow_rst, qsurf_rst, ftsoil_rst & 4410 4439 #ifdef ISO 4411 ,xtsnow_rst,Rland_ice_rst &4440 ,xtsnow_rst,Rland_ice_rst,Rsol_rst & 4412 4441 #endif 4413 4442 ) … … 4431 4460 REAL, DIMENSION(niso,klon, nbsrf), INTENT(OUT) :: xtsnow_rst 4432 4461 REAL, DIMENSION(niso,klon), INTENT(OUT) :: Rland_ice_rst 4462 REAL, DIMENSION(niso,klon), INTENT(OUT) :: Rsol_rst 4433 4463 #endif 4434 4464 … … 4445 4475 xtsnow_rst(:,:,:) = xtsnow(:,:,:) 4446 4476 Rland_ice_rst(:,:) = Rland_ice(:,:) 4477 Rsol_rst(:,:) = Rsol(:,:) 4447 4478 #endif 4448 4479 … … 4464 4495 IF (ALLOCATED(xtsnow)) DEALLOCATE(xtsnow) 4465 4496 IF (ALLOCATED(Rland_ice)) DEALLOCATE(Rland_ice) 4497 IF (ALLOCATED(Rsol)) DEALLOCATE(Rsol) 4466 4498 IF (ALLOCATED(Roce)) DEALLOCATE(Roce) 4467 4499 #endif … … 4492 4524 ! Give default values where new fraction has appread 4493 4525 4494 USE compbl_mod_h4495 USE clesphys_mod_h4526 USE compbl_mod_h 4527 USE clesphys_mod_h 4496 4528 USE indice_sol_mod 4497 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst, dter, &4529 USE phys_state_var_mod, ONLY: delta_sal, ds_ns, dt_ns, delta_sst, dter, & 4498 4530 dser, dt_ds 4499 use config_ocean_skin_m, only: activate_ocean_skin4531 USE config_ocean_skin_m, ONLY: activate_ocean_skin 4500 4532 4501 4533 ! Input variables -
LMDZ6/trunk/libf/phylmd/phyetat0_mod.f90
r5776 r5927 11 11 12 12 USE clesphys_mod_h 13 USE dimphy, only: klon, zmasq, klev, nbtersrf, nbtsoildepths13 USE dimphy, ONLY: klon, zmasq, klev, nbtersrf, nbtsoildepths 14 14 USE iophy, ONLY : init_iophy_new 15 15 USE ocean_cpl_mod, ONLY : ocean_cpl_init … … 18 18 !GG USE surface_data, ONLY : type_ocean, version_ocean 19 19 USE surface_data, ONLY : type_ocean, version_ocean, iflag_seaice, & 20 iflag_seaice_alb, iflag_leads20 iflag_seaice_alb, iflag_leads 21 21 !GG 22 22 USE phyetat0_get_mod, ONLY : phyetat0_get, phyetat0_srf … … 54 54 !GG 55 55 USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy 56 usewxios_mod, ONLY: missing_val_xios => missing_val, using_xios57 use netcdf, only: missing_val_netcdf => nf90_fill_real58 use config_ocean_skin_m, only: activate_ocean_skin56 USE wxios_mod, ONLY: missing_val_xios => missing_val, using_xios 57 USE netcdf, ONLY: missing_val_netcdf => nf90_fill_real 58 USE config_ocean_skin_m, ONLY: activate_ocean_skin 59 59 USE surf_param_mod, ONLY: average_surf_var, interpol_tsoil !AM 60 60 USE dimsoil_mod_h, ONLY: nsoilmx … … 62 62 USE alpale_mod 63 63 USE compbl_mod_h 64 IMPLICIT none 64 65 IMPLICIT NONE 66 65 67 !====================================================================== 66 68 ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818 … … 74 76 REAL qsurf(klon, nbsrf) 75 77 REAL snow(klon, nbsrf) 76 realfder(klon)78 REAL fder(klon) 77 79 REAL run_off_lic_0(klon) 78 80 REAL fractint(klon) … … 190 192 191 193 ! set time iteration 192 CALL init_iteration(itau_phy)194 CALL init_iteration(itau_phy) 193 195 194 196 ! read latitudes and make a sanity check (because already known from dyn) … … 518 520 ENDIF 519 521 520 521 522 found=phyetat0_get(clwcon,"CLWCON","CLWCON",0.) 522 523 found=phyetat0_get(rnebcon,"RNEBCON","RNEBCON",0.) … … 542 543 ENDIF 543 544 544 IF ( (iflag_pbl>1)) then545 IF (iflag_pbl>1) then 545 546 found=phyetat0_srf(pbl_tke,"TKE","Turb. Kinetic. Energ. ",1.e-8) 546 547 ENDIF -
LMDZ6/trunk/libf/phylmd/phyredem.f90
r5776 r5927 9 9 ! Purpose: Write restart state for physics. 10 10 !------------------------------------------------------------------------------- 11 USE compbl_mod_h11 USE compbl_mod_h 12 12 USE alpale_mod 13 USE clesphys_mod_h13 USE clesphys_mod_h 14 14 USE dimphy, ONLY: klon, klev 15 15 USE fonte_neige_mod, ONLY : fonte_neige_final … … 37 37 !dser, dt_ds 38 38 delta_sst, ratqs_inter_, dter, dser,& 39 &dt_ds, hice, tice, bilg_cumul, &39 dt_ds, hice, tice, bilg_cumul, & 40 40 !GG 41 41 frac_tersrf, z0m_tersrf,& … … 63 63 USE ocean_slab_mod, ONLY : nslay, tslab, seaice, tice_slab, fsic 64 64 USE time_phylmdz_mod, ONLY: annee_ref, day_end, itau_phy, pdtphys 65 use config_ocean_skin_m, only: activate_ocean_skin65 USE config_ocean_skin_m, ONLY: activate_ocean_skin 66 66 USE dimsoil_mod_h, ONLY: nsoilmx 67 IMPLICIT none 67 68 IMPLICIT NONE 69 68 70 !====================================================================== 69 71 CHARACTER*(*) fichnom -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r5894 r5927 3 3 ! 4 4 MODULE phys_local_var_mod 5 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER 5 6 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER 7 6 8 ! Variables locales pour effectuer les appels en serie 7 9 !====================================================================== … … 442 444 !$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num) 443 445 #ifdef ISO 444 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap,xtprw 445 !$OMP THREADPRIVATE(xtevap,xtprw) 446 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap 447 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtprw 448 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: uxtflux 449 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: vxtflux 450 !$OMP THREADPRIVATE(xtevap,xtprw,uxtflux,vxtflux) 446 451 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: h1_diag 447 452 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrunoff_diag 448 453 !$OMP THREADPRIVATE(h1_diag,xtrunoff_diag) 454 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtriverflow, xtcoastalflow, Rsol 455 !$OMP THREADPRIVATE(xtriverflow, xtcoastalflow, Rsol) 449 456 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfxtcalving 450 457 !$OMP THREADPRIVATE(zxfxtcalving) … … 1115 1122 ALLOCATE(xtevap(ntraciso,klon)) 1116 1123 ALLOCATE(xtprw(ntraciso,klon)) 1124 ALLOCATE(uxtflux(ntraciso,klon)) 1125 ALLOCATE(vxtflux(ntraciso,klon)) 1117 1126 ALLOCATE(zxfxtcalving(niso,klon)) 1118 1127 ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon)) … … 1121 1130 ALLOCATE(xtrunoff_diag(niso,klon)) 1122 1131 ALLOCATE(h1_diag(klon)) 1123 !SN 1132 !PRSN 1133 ALLOCATE(xtriverflow(niso,klon)) 1134 ALLOCATE(xtcoastalflow(niso,klon)) 1135 ALLOCATE(Rsol(niso,klon)) 1124 1136 xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points 1137 xtriverflow(:,:)=0. 1138 xtcoastalflow(:,:)=0. 1139 Rsol(:,:)=0. 1140 !PRSN 1125 1141 #endif 1126 1142 ! … … 1584 1600 DEALLOCATE(kh, kh_x, kh_w) 1585 1601 #ifdef ISO 1586 DEALLOCATE(xtevap,xtprw )1602 DEALLOCATE(xtevap,xtprw,uxtflux,vxtflux) 1587 1603 DEALLOCATE(zxfxtcalving) 1588 1604 DEALLOCATE(zxxtrunofflic) … … 1592 1608 DEALLOCATE(xt_therm) 1593 1609 DEALLOCATE(h1_diag,xtrunoff_diag) 1610 DEALLOCATE(xtriverflow,xtcoastalflow,Rsol) 1594 1611 #endif 1595 1612 ! -
LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r5905 r5927 2017 2017 TYPE(ctrl_out), SAVE :: o_mean_icefracturb = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2018 2018 'mean_icefracturb', 'Mean of the diagnostic supersaturation distribution (icefrac_turb) [-]', '-', (/ ('', i=1, 10) /)) 2019 TYPE(ctrl_out), SAVE :: o_cldfraliqth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &2019 TYPE(ctrl_out), SAVE :: o_cldfraliqth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2020 2020 'cldfraliqth', 'Liquid fraction of clouds in thermals', '-', (/ ('', i=1, 10) /)) 2021 2021 TYPE(ctrl_out), SAVE :: o_sigma2_icefracturbth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & … … 2459 2459 #ifdef ISO 2460 2460 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtprecip(:) 2461 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtprw(:) 2462 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_uxtflux(:) 2463 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_vxtflux(:) 2464 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_Rland_ice(:) 2465 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtsnow_srf(:,:) ! Niels 18 janvier 2024 2461 2466 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap(:) 2462 2467 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap_srf(:,:) ! ajout Camille 8 mai 2023 … … 2467 2472 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtcond(:) 2468 2473 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtrunoff_diag(:) 2474 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtriverflow(:) ! PRSN 2475 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtcoastalflow(:) 2476 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_Rsol(:) ! PRSN 2469 2477 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtdyn(:) 2470 2478 TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtldyn(:) -
LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
r5685 r5927 57 57 58 58 ! ug Pour les sorties XIOS 59 usewxios_mod60 USE infotrac_phy, ONLY: nbtr_bin59 USE wxios_mod 60 USE infotrac_phy, ONLY: nbtr_bin 61 61 #ifdef ISO 62 62 USE isotopes_mod, ONLY: isoName,iso_HTO 63 63 #ifdef ISOTRAC 64 use isotrac_mod, only: index_zone,index_iso,strtrac64 USE isotrac_mod, ONLY: index_zone,index_iso,strtrac 65 65 #endif 66 66 #endif … … 68 68 USE clesphys_mod_h 69 69 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER 70 71 70 USE yomcst_mod_h 72 IMPLICIT NONE 73 74 75 ! ug Nouveaux arguments n\'ecessaires au histwrite_mod: 71 72 IMPLICIT NONE 73 74 75 ! ug Nouveaux arguments necessaires au histwrite_mod: 76 76 INTEGER, INTENT(IN) :: ivap 77 77 INTEGER, DIMENSION(klon), INTENT(IN) :: lmax_th … … 83 83 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs 84 84 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN):: qx, d_qx 85 REAL, DIMENSION(klon, klev), INTENT(IN) :: zmasse85 REAL, DIMENSION(klon, klev), INTENT(IN) :: zmasse 86 86 87 87 … … 148 148 REAL, DIMENSION(klev+1) :: lev_index 149 149 150 ! ug Variables utilis \'ees pour r\'ecup\'erer le calendrier pour xios150 ! ug Variables utilisees pour recuperer le calendrier pour xios 151 151 INTEGER :: x_an, x_mois, x_jour 152 152 REAL :: x_heure … … 161 161 !FC 162 162 INTEGER :: ILW 163 REAL, DIMENSION(nbands_lw_rrtm) :: wl1_lw, wl2_lw163 REAL, DIMENSION(nbands_lw_rrtm):: wl1_lw, wl2_lw 164 164 165 165 WRITE(lunout,*) 'Debut phys_output_mod.F90' … … 187 187 lev_index(ilev) = REAL(ilev) 188 188 END DO 189 lev_index(klev+1) = REAL(klev+1)189 lev_index(klev+1) = REAL(klev+1) 190 190 191 191 IF (.NOT. ALLOCATED(o_trac)) ALLOCATE(o_trac(nqtot)) … … 201 201 END IF 202 202 #ifdef ISO 203 ALLOCATE(o_xtprw(ntraciso)) ! CAa 204 ALLOCATE(o_uxtflux(ntraciso)) ! CAa 205 ALLOCATE(o_vxtflux(ntraciso)) ! CAa 203 206 ALLOCATE(o_xtprecip(ntraciso)) 207 ALLOCATE(o_Rland_ice(ntraciso)) ! Niels 208 ALLOCATE(o_xtsnow_srf(ntraciso, nbsrf)) ! Niels 18 janvier 2024 204 209 ALLOCATE(o_xtplul(ntraciso)) 205 210 ALLOCATE(o_xtpluc(ntraciso)) … … 210 215 ALLOCATE(o_xtcond(ntraciso)) 211 216 ALLOCATE(o_xtrunoff_diag(ntraciso)) 217 ALLOCATE(o_xtriverflow(ntraciso)) !PRSN 218 ALLOCATE(o_xtcoastalflow(ntraciso)) 219 ALLOCATE(o_Rsol(ntraciso)) !PRSN 212 220 ALLOCATE(o_dxtdyn(ntraciso)) 213 221 ALLOCATE(o_dxtldyn(ntraciso)) … … 219 227 ALLOCATE(o_dxtthe(ntraciso)) 220 228 ALLOCATE(o_dxtch4(ntraciso)) 221 if (iso_HTO.gt.0) then229 IF (iso_HTO.GT.0) THEN 222 230 ALLOCATE(o_dxtprod_nucl(ntraciso)) 223 231 ALLOCATE(o_dxtcosmo(ntraciso)) 224 232 ALLOCATE(o_dxtdecroiss(ntraciso)) 225 endif233 ENDIF 226 234 #endif 227 235 … … 362 370 ELSE 363 371 CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff)) 364 print*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff)372 PRINT*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff) 365 373 ENDIF 366 374 ! ecrit_files contains frequency of file iif in seconds … … 579 587 outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso)) 580 588 589 flag = [1, 1, 10, 10, 10, 10, 11, 11, 11, 11] 590 unit = 'kg/m2' 591 o_xtprw(ixt)=ctrl_out(flag, 'prw'//TRIM(outiso), 'Precipitable water', unit, [('',i=1,nfiles)]) 592 unit = 'kg/m/s' 593 o_uxtflux(ixt)=ctrl_out(flag, 'uq'//TRIM(outiso), 'Zonal humidity transport', unit, [('',i=1,nfiles)]) 594 o_vxtflux(ixt)=ctrl_out(flag, 'vq'//TRIM(outiso), 'Merid humidity transport', unit, [('',i=1,nfiles)]) 595 581 596 flag = [1, 1, 1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/(s*m2)' 582 597 o_xtprecip(ixt)=ctrl_out(flag, 'precip'//TRIM(outiso), 'Precip Totale liq+sol', unit, [('',i=1,nfiles)]) … … 601 616 flag = [1, 1, 1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/m2/s' 602 617 o_xtrunoff_diag (ixt)=ctrl_out(flag, 'runoffland'//TRIM(outiso), 'Run-off rate land for bucket', unit, [('',i=1,nfiles)]) 618 619 ! Niels 14 janvier 2024 620 flag = [1, 1, 1, 10, 10, 10, 11, 11, 11, 11]; unit = '1' 621 o_Rland_ice(ixt) = ctrl_out(flag, 'Rland_ice'//TRIM(outiso), 'R land ice', unit, [('',i=1,nfiles)]) 622 623 ! Snow above soil 624 flag = [1, 1, 1, 10, 10, 10, 11, 11, 11, 11]; unit = 'kg/m2' 625 !do nsrf = 1, nbsrf 626 ! o_xtsnow_srf (ixt, nsrf) = & 627 ! ctrl_out(flag, 'snow_'//clnsurf(nsrf)//TRIM(outiso), 'Snow sfc'//clnsurf(nsrf), unit, [('',i=1,nfiles)]) 628 !end do 629 o_xtsnow_srf (ixt,1)=ctrl_out(flag, 'snow_ter'//TRIM(outiso), 'Snow sfc'//clnsurf(1), unit, [('',i=1,nfiles)]) 630 o_xtsnow_srf (ixt,2)=ctrl_out(flag, 'snow_lic'//TRIM(outiso), 'Snow sfc'//clnsurf(2), unit, [('',i=1,nfiles)]) 631 o_xtsnow_srf (ixt,3)=ctrl_out(flag, 'snow_oce'//TRIM(outiso), 'Snow sfc'//clnsurf(3), unit, [('',i=1,nfiles)]) 632 o_xtsnow_srf (ixt,4)=ctrl_out(flag, 'snow_sic'//TRIM(outiso), 'Snow sfc'//clnsurf(4), unit, [('',i=1,nfiles)]) 633 ! end Niels 634 635 !PRSN 636 637 flag = [1, 1, 1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/(s*m2)' 638 o_xtriverflow (ixt)=ctrl_out(flag, 'rivflow'//TRIM(outiso), 'River flow to ocean', unit, [('',i=1,nfiles)]) 639 o_xtcoastalflow (ixt)=ctrl_out(flag, 'coastflow'//TRIM(outiso), 'Coastal flow to ocean', unit, [('',i=1,nfiles)]) 640 641 flag = [1, 1, 1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/kg' 642 o_Rsol (ixt)=ctrl_out(flag, 'Rsol'//TRIM(outiso), 'Isotopic soil ratio', unit, [('',i=1,nfiles)]) 643 !PRSN 603 644 604 645 flag = [4, 10, 10, 10, 10, 10, 11, 11, 11, 11]; unit = '(kg/kg)/s' … … 645 686 WRITE(lunout,*)'phys_output_open: ends here' 646 687 ENDIF 647 print*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6)688 PRINT*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6) 648 689 649 690 ! DO iq=1,nqtot -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r5905 r5927 224 224 ! Isotopes 225 225 o_xtprecip,o_xtplul,o_xtpluc,o_xtovap,o_xtoliq,o_xtcond, & 226 o_xtrunoff_diag, & 226 o_xtprw, o_uxtflux, o_vxtflux, o_xtrunoff_diag, & 227 o_xtriverflow, o_xtcoastalflow, o_Rsol, & 227 228 o_xtevap,o_dxtdyn,o_dxtldyn,o_dxtcon,o_dxtlsc,o_dxteva, & 228 229 o_dxtajs,o_dxtvdf,o_dxtthe, o_dxtch4, & 229 230 o_dxtprod_nucl,o_dxtcosmo,o_dxtdecroiss, & 230 o_ xtevap_srf, &231 o_Rland_ice, o_xtsnow_srf, o_xtevap_srf, & 231 232 #endif 232 233 ! Tropopause … … 441 442 #ifdef ISO 442 443 xtrain_lsc, xtsnow_lsc, xt_seri, xtl_seri,xts_seri,xtevap, & 443 d_xt_dyn,d_xtl_dyn,d_xt_con,d_xt_vdf,d_xt_ajsb, &444 xtprw, uxtflux, vxtflux, d_xt_dyn,d_xtl_dyn,d_xt_con,d_xt_vdf,d_xt_ajsb, & 444 445 d_xt_lsc,d_xt_eva,d_xt_ch4, & 445 446 d_xt_ajs, d_xt_ajsb, & 446 447 d_xt_prod_nucl,d_xt_cosmo,d_xt_decroiss, & 447 448 xtrunoff_diag, & 449 xtriverflow, xtcoastalflow, Rsol, & 448 450 #endif 449 451 ep, epmax_diag, & ! epmax_cape … … 506 508 #ifdef ISO 507 509 USE isotopes_mod, ONLY: iso_HTO, isoName 510 USE pbl_surface_mod, ONLY: Rland_ice, xtsnow 508 511 #endif 509 512 USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg … … 540 543 USE yomcst_mod_h 541 544 USE phys_constants_mod, ONLY: dobson_u 542 IMPLICIT NONE 545 546 IMPLICIT NONE 543 547 544 548 … … 3210 3214 CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d) 3211 3215 3216 CALL histwrite_phy(o_xtprw(ixt), xtprw(ixt, :)) 3217 CALL histwrite_phy(o_uxtflux(ixt), uxtflux(ixt, :)) 3218 CALL histwrite_phy(o_vxtflux(ixt), vxtflux(ixt, :)) 3219 3212 3220 IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:) 3213 3221 CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d) … … 3216 3224 CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d) 3217 3225 CALL histwrite_phy(o_xtevap(ixt), xtevap(ixt,:)) 3226 CALL histwrite_phy(o_Rland_ice(ixt), Rland_ice(ixt,:)) 3218 3227 CALL histwrite_phy(o_xtovap(ixt), xt_seri(ixt,:,:)) 3219 3228 CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:)) 3220 3229 3221 !! runoff land bucket - ajout S. Nguyen 25 avril 20243230 !! runoff land bucket + soil isotopes ratio + river and costal flows PRSN 2025 3222 3231 CALL histwrite_phy(o_xtrunoff_diag(ixt), xtrunoff_diag(ixt,:)) 3223 3232 CALL histwrite_phy(o_xtriverflow(ixt), xtriverflow(ixt,:)) 3233 CALL histwrite_phy(o_xtcoastalflow(ixt), xtcoastalflow(ixt,:)) 3234 CALL histwrite_phy(o_Rsol(ixt), Rsol(ixt,:)) 3224 3235 3225 3236 DO nsrf = 1, nbsrf ! ajout Camille 8 mai 2023 3226 3237 IF (vars_defined) zx_tmp_fi2d(1 : klon) = fxtevap(ixt,:, nsrf) 3227 3238 CALL histwrite_phy(o_xtevap_srf(ixt,nsrf), zx_tmp_fi2d) 3239 ENDDO 3240 3241 DO nsrf = 1, nbsrf ! Niels 18 janvier 2024 3242 IF (vars_defined) zx_tmp_fi2d(1 : klon) = xtsnow(ixt, :, nsrf) 3243 CALL histwrite_phy(o_xtsnow_srf(ixt, nsrf), zx_tmp_fi2d) 3228 3244 ENDDO 3229 3245 -
LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90
r5776 r5927 133 133 !$OMP THREADPRIVATE(prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien) 134 134 #ifdef ISO 135 REAL, ALLOCATABLE, SAVE :: xt_ancien(:,:,:),xtl_ancien(:,:,:),xts_ancien(:,:,:), xtbs_ancien(:,:,:)135 REAL, ALLOCATABLE, SAVE :: xt_ancien(:,:,:),xtl_ancien(:,:,:),xts_ancien(:,:,:),xtbs_ancien(:,:,:) 136 136 !$OMP THREADPRIVATE(xt_ancien,xtl_ancien,xts_ancien,xtbs_ancien) 137 137 #endif … … 606 606 USE clesphys_mod_h 607 607 USE indice_sol_mod 608 use config_ocean_skin_m, only: activate_ocean_skin609 use surface_data, only: type_ocean608 USE config_ocean_skin_m, ONLY: activate_ocean_skin 609 USE surface_data, ONLY: type_ocean 610 610 IMPLICIT NONE 611 611 612 integer, intent(in):: read_climoz612 INTEGER, INTENT(IN):: read_climoz 613 613 ! read ozone climatology 614 614 ! Allowed values are 0, 1 and 2 … … 619 619 620 620 621 print*, 'is_initialized', is_initialized621 PRINT*, 'is_initialized', is_initialized 622 622 IF (is_initialized) RETURN 623 623 is_initialized=.TRUE. … … 654 654 ALLOCATE(falb2(klon,nbsrf)) 655 655 !albedo SB >>> 656 print*, 'allocate falb'656 PRINT*, 'allocate falb' 657 657 ALLOCATE(falb_dir(klon,nsw,nbsrf),falb_dif(klon,nsw,nbsrf)) 658 658 !! print*, 'allocate falb good', falb_dir(1,1,1) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5918 r5927 80 80 USE readaerosol_mod, ONLY : init_aero_fromfile 81 81 USE readaerosolstrato_m, ONLY : init_readaerosolstrato 82 USE radlwsw_m, only: radlwsw82 USE radlwsw_m, ONLY: radlwsw 83 83 USE reevap_mod, ONLY: reevap 84 84 USE regr_horiz_time_climoz_m, ONLY: regr_horiz_time_climoz 85 USE regr_pr_time_av_m, only: regr_pr_time_av85 USE regr_pr_time_av_m, ONLY: regr_pr_time_av 86 86 USE stratocu_if_mod, ONLY: stratocu_if 87 87 USE surface_data, ONLY : type_ocean, ok_veget 88 88 USE tend_to_tke_mod, ONLY: tend_to_tke 89 USE time_phylmdz_mod, only: current_time, itau_phy, pdtphys, raz_date, update_time89 USE time_phylmdz_mod, ONLY: current_time, itau_phy, pdtphys, raz_date, update_time 90 90 USE tracinca_mod, ONLY: config_inca 91 91 USE transp_mod, ONLY: transp … … 412 412 USE phytracr_spl_mod, ONLY: phytracr_spl_out_init, phytracr_spl 413 413 USE s2s, ONLY : s2s_initialize, s2s_finalize 414 414 415 IMPLICIT NONE 415 416 !>====================================================================== … … 458 459 !! d_ps----output-R-tendance physique de la pression au sol 459 460 !!====================================================================== 460 integerjjmp1461 INTEGER jjmp1 461 462 ! parameter (jjmp1=jjm+1-1/jjm) ! => (jjmp1=nbp_lat-1/(nbp_lat-1)) 462 463 ! integer iip1 -
LMDZ6/trunk/libf/phylmd/surf_land_mod.F90
r5627 r5927 26 26 ,xtprecip_rain, xtprecip_snow,xtspechum, & 27 27 xtsnow, xtsol,xtevap,h1, & 28 runoff_diag,xtrunoff_diag,Rland_ice & 28 runoff_diag,xtrunoff_diag,Rland_ice, & 29 xtriverflow, xtcoastalflow, Rsol & 29 30 #endif 30 31 ) … … 123 124 #ifdef ISO 124 125 REAL, DIMENSION(niso,klon), INTENT(INOUT) :: xtsnow, xtsol 126 REAL, DIMENSION(niso,klon), INTENT(INOUT) :: Rsol 125 127 #endif 126 128 … … 152 154 REAL, DIMENSION(klon, nbtersrf), INTENT(OUT) :: fluxlat_tersrf 153 155 #ifdef ISO 154 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 155 REAL, DIMENSION(klon), INTENT(OUT) :: h1 156 REAL, DIMENSION(ntiso,klon), INTENT(OUT) :: xtevap 157 REAL, DIMENSION(klon), INTENT(OUT) :: h1 158 REAL, DIMENSION(klon), INTENT(OUT) :: runoff_diag 156 159 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtrunoff_diag 157 REAL, DIMENSION(klon), INTENT(OUT) :: runoff_diag 158 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice 160 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice 161 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtriverflow 162 REAL, DIMENSION(niso,klon), INTENT(OUT) :: xtcoastalflow 159 163 #endif 160 164 … … 245 249 END DO 246 250 247 #ifdef ISO 248 CALL abort_physic('surf_land_mod 220','isos pas prevus dans orchidee',1) 249 #endif 251 !!SN LMDZORISO 252 !#ifdef ISO 253 ! CALL abort_physic('surf_land_mod 220','isos pas prevus dans orchidee',1) 254 !#endif 250 255 ! temporary for keeping same results using lwdown_m instead of lwdown 251 256 CALL surf_land_orchidee(itime, dtime, date0, knon, & … … 260 265 emis_new, z0m, z0h, qsurf, & 261 266 veget, lai, height & 262 !#ifdef ISO 263 ! , xtprecip_rain, xtprecip_snow, xtspechum, xtevap & 264 !#endif 267 #ifdef ISO 268 ,xtprecip_rain, xtprecip_snow, & 269 xtriverflow, xtcoastalflow, xtevap, Rsol & 270 #endif 265 271 ) 266 272 -
LMDZ6/trunk/libf/phylmd/surf_land_orchidee_mod.F90
r5894 r5927 50 50 tsol_rad, tsurf_new, alb1_new, alb2_new, & 51 51 emis_new, z0m_new, z0h_new, qsurf, & 52 veget, lai, height ) 52 veget, lai, height & 53 #ifdef ISO 54 ,xtprecip_rain,xtprecip_snow, & 55 xtriverflow, xtcoastalflow, xtevap, Rsol & 56 #endif 57 & ) 53 58 54 59 USE mod_surf_para … … 60 65 #ifdef CPP_VEGET 61 66 USE time_phylmdz_mod, ONLY: itau_phy 67 #endif 68 #ifdef ISO 69 USE infotrac_phy, ONLY: niso, ntraciso=>ntiso 70 USE isotopes_mod, ONLY: ridicule 71 #ifdef ISOTRAC 72 USE isotrac_mod, ONLY: index_zone,index_iso, option_traceurs,izone_cont, & 73 & bassin_map 74 #endif 62 75 #endif 63 76 USE yomcst_mod_h … … 136 149 REAL, DIMENSION(klon), INTENT(IN) :: lwdown, swnet, swdown, ps 137 150 REAL, DIMENSION(klon), INTENT(IN) :: q2m, t2m 151 #ifdef ISO 152 REAL, DIMENSION(ntraciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow 153 #endif 138 154 139 155 ! Parametres de sortie 140 156 !**************************************************************************************** 141 157 REAL, DIMENSION(klon), INTENT(OUT) :: evap, fluxsens, fluxlat, qsurf 158 !PRSN 159 #ifdef ISO 160 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtriverflow 161 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtcoastalflow 162 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtevap 163 REAL, DIMENSION(ntraciso,klon), INTENT(INOUT) :: Rsol 164 #endif 165 !PRSN 142 166 REAL, DIMENSION(klon), INTENT(OUT) :: tsol_rad, tsurf_new 143 167 REAL, DIMENSION(klon), INTENT(OUT) :: alb1_new, alb2_new … … 234 258 !$OMP THREADPRIVATE(ind_cell) 235 259 INTEGER :: begin, end 260 #ifdef ISO 261 ! profondeur du reservoir pour le calcul de la moyenne glissante 262 REAL, PARAMETER :: h_sol = 0.1 263 #ifdef ISOTRAC 264 INTEGER, SAVE :: izone_recoit 265 !$OMP THREADPRIVATE(izone_recoit) 266 #endif 267 INTEGER :: i, ixt 268 #endif 236 269 ! 237 270 ! Fin definition … … 253 286 IF ( .NOT. ALLOCATED(albedo_keep)) THEN 254 287 !ym ALLOCATE(albedo_keep(klon)) 255 !ym bizarre que non allou �en knon precedement288 !ym bizarre que non alloue en knon precedement 256 289 ALLOCATE(albedo_keep(knon)) 257 290 ALLOCATE(zlev(knon)) … … 392 425 lon_scat(:,nbp_lat) = lon_scat(:,2) 393 426 lat_scat(:,nbp_lat) = rlat_g(klon_glo) 394 ENDIF !FC427 ENDIF !FC 395 428 396 429 ENDIF … … 458 491 resolution(igrid,1) = dx(ij) 459 492 resolution(igrid,2) = dy(ij) 460 print*, 'resolution FCCC',resolution(igrid,1),resolution(igrid,2)493 PRINT*, 'resolution FCCC',resolution(igrid,1),resolution(igrid,2) 461 494 ENDDO 462 495 ENDIF … … 652 685 ! fields_in can then used elsewhere in the model 653 686 654 fields_in(:,:)=0.0655 656 DO nb=1, nbcf_in_orc657 DO igrid = 1, knon687 fields_in(:,:)=0.0 688 689 DO nb=1, nbcf_in_orc 690 DO igrid = 1, knon 658 691 ireal = knindex(igrid) 659 692 fields_in(ireal,nb)=yfields_in(igrid,nb) 660 ENDDO661 WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)662 ENDDO693 ENDDO 694 WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb) 695 ENDDO 663 696 ! >> PC 697 698 #ifdef ISO 699 ! calcul de xtevap, xtcoostalflow, xtriverflow 700 DO i=1,knon 701 IF (precip_rain(i)+precip_snow(i).GT.ridicule) THEN 702 DO ixt=1,niso 703 ! hsol=10.0 704 Rsol(ixt,i)=(h_sol*Rsol(ixt,i) & 705 & +(xtprecip_rain(ixt,i)+xtprecip_snow(ixt,i))*dtime) & 706 & /(h_sol+(precip_rain(i)+precip_snow(i))*dtime) 707 ENDDO !do ixt=1,niso 708 ENDIF !if (precip_rain(i)+precip_snow(i).gt.ridicule) then 709 ENDDO !do i=1,knon 710 711 DO i=1,knon 712 DO ixt=1,niso 713 xtevap(ixt,i) = evap(i)*Rsol(ixt,i) 714 xtcoastalflow(ixt,i)= coastalflow(i)*Rsol(ixt,i) 715 xtriverflow(ixt,i) = riverflow(i)*Rsol(ixt,i) 716 ENDDO 717 ENDDO 718 719 IF (niso /= ntraciso) THEN 720 abort_message='water tagging pas encore pr\E9vu ici' 721 CALL abort_physic(modname,abort_message,1) 722 ENDIF 723 724 #ifdef ISOTRAC 725 IF ((option_traceurs == 20).or.(option_traceurs == 23)) THEN 726 izone_recoit = bassin_map(knindex(i)) 727 ELSE 728 izone_recoit = izone_cont 729 ENDIF 730 731 DO i=1,knon 732 DO ixt=niso+1,ntraciso 733 IF (index_zone(ixt) == izone_recoit) THEN 734 xtevap(ixt,i) = xtevap(index_iso(ixt),i) 735 ELSE 736 xtevap(ixt,i) = 0.0 737 ENDIF 738 ENDDO !do ixt=niso+1,ntraciso 739 ENDDO 740 #endif 741 #endif 664 742 665 743 END SUBROUTINE surf_land_orchidee -
LMDZ6/trunk/libf/phylmd/surf_land_orchidee_nolic_mod.F90
r5894 r5927 46 46 tsol_rad, tsurf_new, alb1_new, alb2_new, & 47 47 emis_new, z0m_new, z0h_new, qsurf, & 48 veget, lai, height ) 48 veget, lai, height & 49 #ifdef ISO 50 ,xtprecip_rain,xtprecip_snow, & 51 xtriverflow, xtcoastalflow, xtevap, Rsol & 52 #endif 53 & ) 49 54 50 55 USE mod_surf_para … … 56 61 #ifdef CPP_VEGET 57 62 USE time_phylmdz_mod, ONLY: itau_phy 63 #endif 64 #ifdef ISO 65 USE infotrac_phy, ONLY: niso, ntraciso=>ntiso 66 USE isotopes_mod, ONLY: ridicule 67 #ifdef ISOTRAC 68 USE isotrac_mod, ONLY: index_zone,index_iso, option_traceurs,izone_cont, & 69 & bassin_map 70 #endif 58 71 #endif 59 72 USE yomcst_mod_h … … 133 146 REAL, DIMENSION(klon), INTENT(IN) :: lwdown, swnet, swdown, ps 134 147 REAL, DIMENSION(klon), INTENT(IN) :: q2m, t2m 148 #ifdef ISO 149 REAL, DIMENSION(ntraciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow 150 #endif 135 151 136 152 ! Parametres de sortie 137 153 !**************************************************************************************** 138 154 REAL, DIMENSION(klon), INTENT(OUT) :: evap, fluxsens, fluxlat, qsurf 155 !PRSN 156 #ifdef ISO 157 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtriverflow 158 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtcoastalflow 159 REAL, DIMENSION(ntraciso,klon), INTENT(OUT) :: xtevap 160 REAL, DIMENSION(ntraciso,klon), INTENT(INOUT) :: Rsol 161 #endif 162 !PRSN 139 163 REAL, DIMENSION(klon), INTENT(OUT) :: tsol_rad, tsurf_new 140 164 REAL, DIMENSION(klon), INTENT(OUT) :: alb1_new, alb2_new … … 228 252 !$OMP THREADPRIVATE(ind_cell) 229 253 INTEGER :: begin, end 254 #ifdef ISO 255 ! profondeur du reservoir pour le calcul de la moyenne glissante 256 REAL, PARAMETER :: h_sol = 0.1 257 #ifdef ISOTRAC 258 INTEGER, SAVE :: izone_recoit 259 !$OMP THREADPRIVATE(izone_recoit) 260 #endif 261 INTEGER :: i, ixt 262 #endif 230 263 ! 231 264 ! Fin definition … … 641 674 ! fields_in can then used elsewhere in the model 642 675 643 fields_in(:,:)=0.0644 645 DO nb=1, nbcf_in_orc646 DO igrid = 1, knon676 fields_in(:,:)=0.0 677 678 DO nb=1, nbcf_in_orc 679 DO igrid = 1, knon 647 680 ireal = knindex(igrid) 648 681 fields_in(ireal,nb)=yfields_in(igrid,nb) 649 ENDDO650 WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)651 ENDDO682 ENDDO 683 WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb) 684 ENDDO 652 685 ! >> PC 686 687 #ifdef ISO 688 ! calcul de xtevap, xtcoostalflow, xtriverflow 689 DO i=1,knon 690 IF (precip_rain(i)+precip_snow(i).GT.ridicule) THEN 691 DO ixt=1,niso 692 ! hsol=10.0 693 Rsol(ixt,i)=(h_sol*Rsol(ixt,i) & 694 & +(xtprecip_rain(ixt,i)+xtprecip_snow(ixt,i))*dtime) & 695 & /(h_sol+(precip_rain(i)+precip_snow(i))*dtime) 696 ENDDO !do ixt=1,niso 697 ENDIF !if (precip_rain(i)+precip_snow(i).gt.ridicule) then 698 ENDDO !do i=1,knon 699 700 DO i=1,knon 701 DO ixt=1,niso 702 xtevap(ixt,i) = evap(i)*Rsol(ixt,i) 703 xtcoastalflow(ixt,i)= coastalflow(i)*Rsol(ixt,i) 704 xtriverflow(ixt,i) = riverflow(i)*Rsol(ixt,i) 705 ENDDO 706 ENDDO 707 708 IF (niso /= ntraciso) THEN 709 abort_message='water tagging pas encore pr\E9vu ici' 710 CALL abort_physic(modname,abort_message,1) 711 ENDIF 712 713 #ifdef ISOTRAC 714 IF ((option_traceurs == 20).or.(option_traceurs == 23)) THEN 715 izone_recoit = bassin_map(knindex(i)) 716 ELSE 717 izone_recoit = izone_cont 718 ENDIF 719 720 DO i=1,knon 721 DO ixt=niso+1,ntraciso 722 IF (index_zone(ixt) == izone_recoit) THEN 723 xtevap(ixt,i) = xtevap(index_iso(ixt),i) 724 ELSE 725 xtevap(ixt,i) = 0.0 726 ENDIF 727 ENDDO !do ixt=niso+1,ntraciso 728 ENDDO 729 #endif 730 #endif 653 731 654 732 END SUBROUTINE surf_land_orchidee -
LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90
r5894 r5927 3 3 MODULE isotopes_routines_mod 4 4 USE infotrac_phy, ONLY: niso, ntraciso=>ntiso, index_trac=>itZonIso, ntraceurs_zone=>nzone 5 5 6 IMPLICIT NONE 6 7 … … 13542 13543 & bassin_map 13543 13544 #endif 13544 USE yoethf_mod_h 13545 USE yomcst_mod_h 13546 implicit none 13547 13548 INCLUDE "FCTTRE.h" 13545 USE yoethf_mod_h 13546 USE yomcst_mod_h 13547 13548 IMPLICIT NONE 13549 13550 INCLUDE "FCTTRE.h" 13549 13551 13550 13552 … … 14462 14464 USE paramet_mod_h 14463 14465 USE yomcst_mod_h 14464 implicit none 14466 14467 IMPLICIT NONE 14465 14468 14466 14469 INCLUDE "FCTTRE.h" … … 14492 14495 INTEGER, INTENT(IN) :: nisurf 14493 14496 INTEGER, DIMENSION(klon), INTENT(IN) :: knindex 14494 real, DIMENSION(klon), INTENT(IN) :: run_off_lic_diag14495 real, INTENT(IN) :: coeff_rel_diag14497 REAL, DIMENSION(klon), INTENT(IN) :: run_off_lic_diag 14498 REAL, INTENT(IN) :: coeff_rel_diag 14496 14499 REAL, DIMENSION(niso,klon), INTENT(IN) :: Rland_ice 14497 14500 … … 15858 15861 SUBROUTINE phyisoetat0 (snow,run_off_lic_0, & 15859 15862 & xtsnow,xtrun_off_lic_0, & 15860 & Rland_ice )15863 & Rland_ice,Rsol) 15861 15864 USE dimphy, only: klon,klev 15862 15865 !USE mod_grid_phy_lmdz … … 15869 15872 !USE write_field_phy 15870 15873 USE indice_sol_mod, only: nbsrf 15871 USE isotopes_mod, ONLY: initialisation_iso, iso_eau,iso_HDO, &15874 USE isotopes_mod, ONLY: initialisation_iso, iso_eau,iso_HDO, & 15872 15875 ridicule_qsol,tnat, P_veg,iso_O18,ridicule, ridicule_snow,iso_O17, & 15873 15876 iso_HTO 15874 15877 #ifdef ISOVERIF 15875 USE isotopes_verif_mod 15876 #endif 15877 15878 USE compbl_mod_h 15879 USE clesphys_mod_h 15880 implicit none 15878 USE isotopes_verif_mod 15879 #endif 15880 15881 USE compbl_mod_h 15882 USE clesphys_mod_h 15883 15884 IMPLICIT NONE 15881 15885 15882 15886 ! equivalent de phyetat0 pour les isotopes … … 15891 15895 real xtrun_off_lic_0(niso,klon) 15892 15896 real Rland_ice(niso,klon) 15897 real Rsol(niso,klon) 15893 15898 15894 15899 !REAL qsol(klon) … … 15909 15914 & snow,run_off_lic_0, & 15910 15915 & xtsnow,xtrun_off_lic_0, & 15911 & Rland_ice )15916 & Rland_ice,Rsol) 15912 15917 else 15913 15918 write(*,*) 'phyisoetat0 57:' … … 15916 15921 call phyiso_etat0_dur( & 15917 15922 & xtsnow, & 15918 & xtrun_off_lic_0, Rland_ice, &15923 & xtrun_off_lic_0, Rland_ice, Rsol, & 15919 15924 & snow,run_off_lic_0) 15920 15925 endif … … 16030 16035 SUBROUTINE phyiso_etat0_dur ( & 16031 16036 & xtsnow, & 16032 & xtrun_off_lic_0, Rland_ice, &16037 & xtrun_off_lic_0, Rland_ice, Rsol, & 16033 16038 & snow,run_off_lic_0) 16034 16039 … … 16043 16048 !USE write_field_phy 16044 16049 USE indice_sol_mod, only: nbsrf 16045 USE isotopes_mod, ONLY: tnat,iso_HDO,iso_O18,iso_HTO, iso_eau,toce, &16050 USE isotopes_mod, ONLY: tnat,iso_HDO,iso_O18,iso_HTO, iso_eau,toce, & 16046 16051 & Rdefault,iso_O17,ridicule,ridicule_qsol 16047 16052 #ifdef ISOVERIF 16048 USE isotopes_verif_mod16053 USE isotopes_verif_mod 16049 16054 #endif 16050 16055 #ifdef ISOTRAC 16051 USE isotrac_mod, ONLY: index_iso,index_zone,izone_init16052 #endif 16053 USE compbl_mod_h16056 USE isotrac_mod, ONLY: index_iso,index_zone,izone_init 16057 #endif 16058 USE compbl_mod_h 16054 16059 USE clesphys_mod_h 16055 implicit none 16056 16057 ! arguments 16060 16061 IMPLICIT NONE 16062 16063 ! arguments 16058 16064 !integer niso 16059 16065 !real xtsol(niso,klon) … … 16062 16068 real xtrun_off_lic_0(niso,klon) 16063 16069 real Rland_ice(niso,klon) 16070 real Rsol(niso,klon) 16064 16071 16065 16072 !REAL qsol(klon) … … 16217 16224 16218 16225 if (q_ancien(i,k).gt.ridicule) then 16219 xtl_ancien(ixt,i,k)=ql_ancien(i,k)*alpha(ixt) &16226 xtl_ancien(ixt,i,k)=ql_ancien(i,k)*alpha(ixt) & 16220 16227 & *xt_ancien(ixt,i,k)/q_ancien(i,k) 16221 xts_ancien(ixt,i,k)=qs_ancien(i,k)*alpha(ixt) &16228 xts_ancien(ixt,i,k)=qs_ancien(i,k)*alpha(ixt) & 16222 16229 & *xt_ancien(ixt,i,k)/q_ancien(i,k) 16223 16230 else !if (q_ancien(i,k).gt.ridicule) then … … 16313 16320 Rland_ice(ixt,i)= & 16314 16321 & tnat(ixt)*(deltaD_snow(ixt)/1000.0+1.0) 16322 Rsol(ixt,i)=Rland_ice(ixt,i) 16315 16323 enddo 16316 16324 enddo !do i=1,klon … … 16326 16334 & 'phyiso_etat0_dur 756') 16327 16335 call iso_verif_noNAN(Rland_ice(ixt,i),'phyiso_etat0_dur 757') 16336 call iso_verif_noNAN(Rsol(ixt,i),'phyiso_etat0_dur 757') 16328 16337 enddo !do ixt=1,niso 16329 16338 if (iso_eau.gt.0) then … … 16408 16417 end subroutine phyiso_etat0_dur 16409 16418 16410 SUBROUTINE phyiso_etat0_fichier(snow, run_off_lic_0, xtsnow, xtrun_off_lic_0, Rland_ice )16419 SUBROUTINE phyiso_etat0_fichier(snow, run_off_lic_0, xtsnow, xtrun_off_lic_0, Rland_ice, Rsol) 16411 16420 USE dimphy, ONLY: klon,klev 16412 16421 USE iophy … … 16427 16436 USE isotrac_mod, ONLY: strtrac, initialisation_isotrac, index_iso, index_zone, izone_init 16428 16437 #endif 16429 USE compbl_mod_h16438 USE compbl_mod_h 16430 16439 USE clesphys_mod_h 16440 16431 16441 IMPLICIT NONE 16432 16442 16433 REAL, INTENT(IN) :: snow(klon,nbsrf)16434 REAL, INTENT(IN) :: run_off_lic_0(klon)16443 REAL, INTENT(IN) :: snow (klon,nbsrf) 16444 REAL, INTENT(IN) :: run_off_lic_0 (klon) 16435 16445 REAL, INTENT(OUT) :: xtsnow(niso,klon,nbsrf) 16436 16446 REAL, INTENT(OUT) :: xtrun_off_lic_0(niso,klon) 16437 16447 REAL, INTENT(OUT) :: Rland_ice(niso,klon) 16448 REAL, INTENT(OUT) :: Rsol (niso,klon) 16438 16449 16439 16450 INTEGER :: ierr, i, ixt, k, nsrf, nid, nvarid, lnblnk … … 16498 16509 if (.NOT.found) CALL abort_physic('isotopes_routines_mod', 'phyiso_etat0_fichier 16581b: unfound isotopic variable',1) 16499 16510 found = phyetat0iso_get2(Rland_ice, "Rland_ice", "SR land ice", 0.) 16511 found = phyetat0iso_get2(Rsol, "Rsol", "SR land soil", 0.) 16500 16512 found = phyetat0iso_srf3(xtsnow, "XTSNOW", "Surface snow", 0.) ! CR avril 2023: deplacer ici 16501 16513 found = phyetat0iso_get2(xtrun_off_lic_0, "XTRUNOFFLIC0", "RUNOFFLIC0", 0.) … … 16629 16641 & d_xt_decroiss, & 16630 16642 & xt_seri) 16631 USE isotopes_mod, only: iso_HTO,ok_prod_nucl_tritium16632 USE dimphy, only: klon,klev16633 USE geometry_mod, only: latitude_deg,longitude_deg, & ! en degré, remplace rlat et rlon16634 & latitude,longitude ! en radian, remplace rlatd et rlond16635 #ifdef ISOVERIF 16636 USE isotopes_verif_mod16643 USE isotopes_mod, ONLY: iso_HTO,ok_prod_nucl_tritium 16644 USE dimphy, ONLY: klon,klev 16645 USE geometry_mod, ONLY: latitude_deg,longitude_deg, & ! en degré, remplace rlat et rlon 16646 & latitude,longitude ! en radian, remplace rlatd et rlond 16647 #ifdef ISOVERIF 16648 USE isotopes_verif_mod 16637 16649 #endif 16638 16650 USE yomcst_mod_h 16639 implicit none 16651 16652 IMPLICIT NONE 16640 16653 16641 16654 … … 18231 18244 & kmin_jessai,kmax_jessai) 18232 18245 USE dimphy, only: klon,klev 18233 use geometry_mod, only: latitude_deg,longitude_deg18246 USE geometry_mod, ONLY: latitude_deg,longitude_deg 18234 18247 #ifdef ISOVERIF 18235 18248 USE isotopes_verif_mod 18236 18249 #endif 18237 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 18238 USE yomcst_mod_h 18239 implicit none 18250 USE dimensions_mod, ONLY: iim, jjm, llm, ndm 18251 USE yomcst_mod_h 18252 18253 IMPLICIT NONE 18240 18254 18241 18255 … … 18375 18389 & prod_nucl) 18376 18390 USE isotopes_mod, ONLY: iso_HTO 18377 use geometry_mod, only: cell_area18378 use dimphy, only: klon,klev18391 USE geometry_mod, ONLY: cell_area 18392 USE dimphy, ONLY: klon,klev 18379 18393 #ifdef ISOVERIF 18380 18394 USE isotopes_verif_mod 18381 18395 #endif 18382 USE yomcst_mod_h 18383 implicit none 18396 USE yomcst_mod_h 18397 18398 IMPLICIT NONE 18384 18399 18385 18400 -
LMDZ6/trunk/libf/phylmdiso/phyaqua_mod.F90
r5894 r5927 5 5 ! Routines complementaires pour la physique planetaire. 6 6 USE clesphys_mod_h 7 IMPLICIT NONE 7 8 IMPLICIT NONE 8 9 9 10 CONTAINS … … 70 71 REAL :: xtsolsrf(niso,nlon, nbsrf), xtsnsrf(niso,nlon, nbsrf) 71 72 REAL :: Rland_ice(niso,nlon) 73 REAL :: Rsol(niso,nlon) 72 74 #endif 73 75 … … 354 356 !GG 355 357 #ifdef ISO 356 CALL pbl_surface_init_iso(xtsnsrf,Rland_ice )358 CALL pbl_surface_init_iso(xtsnsrf,Rland_ice,Rsol) 357 359 #endif 358 360 -
LMDZ6/trunk/libf/phylmdiso/phyetat0_mod.F90
r5894 r5927 22 22 !GG USE surface_data, ONLY : type_ocean, version_ocean 23 23 USE surface_data, ONLY : type_ocean, version_ocean, iflag_seaice, & 24 iflag_seaice_alb, iflag_leads24 iflag_seaice_alb, iflag_leads 25 25 !GG 26 26 USE phyetat0_get_mod, ONLY : phyetat0_get, phyetat0_srf … … 125 125 REAL xtrun_off_lic_0(niso,klon) 126 126 REAL Rland_ice(niso,klon) 127 REAL Rsol(niso,klon) 127 128 #endif 128 129 … … 650 651 CALL phyisoetat0 (snow,run_off_lic_0, & 651 652 & xtsnow,xtrun_off_lic_0, & 652 & Rland_ice )653 & Rland_ice,Rsol) 653 654 #ifdef ISOVERIF 654 655 WRITE(*,*) 'phyetat0 1074' … … 805 806 !GG 806 807 #ifdef ISO 807 CALL pbl_surface_init_iso(xtsnow,Rland_ice )808 CALL pbl_surface_init_iso(xtsnow,Rland_ice,Rsol) 808 809 #endif 809 810 endif -
LMDZ6/trunk/libf/phylmdiso/phyredem.F90
r5894 r5927 92 92 REAL xtrun_off_lic_0(niso,klon) 93 93 REAL Rland_ice(niso,klon) 94 REAL Rsol(niso,klon) 94 95 #endif 95 96 … … 112 113 CALL pbl_surface_final(fder, snow, qsurf, tsoil & 113 114 #ifdef ISO 114 ,xtsnow,Rland_ice &115 ,xtsnow,Rland_ice,Rsol & 115 116 #endif 116 117 ) … … 485 486 CALL phyisoredem (pass, & 486 487 & xtsnow, & 487 & xtrun_off_lic_0,Rland_ice, &488 & xtrun_off_lic_0,Rland_ice, Rsol, & 488 489 & run_off_lic_0) 489 490 #endif … … 555 556 ! mais elle a besoin de put_field_srf1 qui est contenue 556 557 ! dans la subroutine phyredem. Si on veut mettre cette 557 ! routine dans isotopes_mod, il faudrait convertir ce 558 ! routine dans isotopes_mod, il faudrait convertir ce 558 559 ! fichier en module pour pouvoir en appeler des routines 559 560 560 561 SUBROUTINE phyisoredem (pass, & 561 562 & xtsnow, & 562 & xtrun_off_lic_0,Rland_ice, &563 & xtrun_off_lic_0,Rland_ice, Rsol, & 563 564 & run_off_lic_0) 564 565 USE dimphy … … 593 594 REAL, INTENT(IN) :: xtrun_off_lic_0(niso,klon) 594 595 REAL, INTENT(IN) :: Rland_ice(niso,klon) 596 REAL, INTENT(IN) :: Rsol(niso,klon) 595 597 REAL, INTENT(IN) :: run_off_lic_0(klon) 596 598 INTEGER, INTENT(IN) :: pass … … 691 693 CALL put_field(pass, "Rland_ice"//TRIM(outiso), "ratio land ice", iso_tmp) 692 694 695 iso_tmp(:)=Rsol(ixt,:) 696 CALL put_field(pass, "Rsol"//TRIM(outiso), "ratio land soil", iso_tmp) 697 693 698 iso_tmp(:)=xtrun_off_lic_0(ixt,:) 694 699 CALL put_field(pass,"XTRUNOFFLIC0"//TRIM(outiso), "Runofflic0", iso_tmp) -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5918 r5927 210 210 u_seri,v_seri,cf_seri,rvc_seri,tr_seri, & 211 211 rhcl, & 212 #ifdef ISO 213 qx_seri, & ! CR 214 #endif 212 qx_seri, & ! CR-SN 4D ISO 215 213 ! Dynamic tendencies (diagnostics) 216 214 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_qbs_dyn, & … … 229 227 ! 230 228 d_t_eva,d_q_eva,d_ql_eva,d_qi_eva, & 231 #ifdef ISO 232 d_qx_eva, & 233 #endif 229 d_qx_eva, & ! CR-SN 4D ISO 234 230 d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc, & 235 231 d_t_lscst,d_q_lscst, & … … 444 440 d_xt_eva, d_xt_lsc, d_xtl_lsc, d_xti_lsc, & 445 441 d_xt_ch4,d_xt_prod_nucl,d_xt_cosmo,d_xt_decroiss, & 446 zxfxtcalving, xtevap,xtprw,&447 xt_therm, dxtvdf_w, dxtvdf_x, &448 zxfxtcalving, zxfxtfonte, &442 xtevap, xtprw, uxtflux, vxtflux, & 443 xt_therm, dxtvdf_w, dxtvdf_x, & 444 zxfxtcalving, zxfxtfonte, & 449 445 zxxtrunofflic, & ! pas besoin du runoff, c'est seulement quand on couple à sisvat 450 h1_diag,runoff_diag,xtrunoff_diag,zxxtsnow,xtVprecip,xtVprecipi, & 446 h1_diag,runoff_diag,xtrunoff_diag, & 447 xtriverflow, xtcoastalflow, & 448 zxxtsnow,xtVprecip,xtVprecipi, & 451 449 xtrain_lsc,xtsnow_lsc,pxtrfl,pxtsfl,xtclw,d_deltaxt_wk, & 452 450 d_deltaxt_the,d_deltaxt_vdf,d_deltaxt_ajs_cv, & … … 479 477 USE phytracr_spl_mod, ONLY: phytracr_spl_out_init, phytracr_spl 480 478 USE s2s, ONLY : s2s_initialize, s2s_finalize 479 481 480 IMPLICIT NONE 482 481 … … 834 833 REAL d_xt_adjwk(ntraciso,klon,klev) 835 834 #endif 835 836 836 ! 837 837 !RR:fin declarations poches froides … … 1490 1490 WRITE(lunout,*) '=================================================' 1491 1491 CALL phys_local_var_init 1492 WRITE(lunout,*) 'MAXVAL(runoff_diag(:))=',MAXVAL(runoff_diag) 1492 1493 ! 1493 1494 ! appel a la lecture du run.def physique … … 2653 2654 u_seri(i,k) = u(i,k) 2654 2655 v_seri(i,k) = v(i,k) 2655 #ifdef ISO2656 2656 qx_seri(i,k,:) = qx(i,k,:) 2657 #endif2658 2657 q_seri(i,k) = qx(i,k,ivap) 2659 2658 ql_seri(i,k) = qx(i,k,iliq) … … 2771 2770 ENDDO 2772 2771 ELSE 2772 !! SN trouver un moyen d'enlever cette ligne qui utilise strIdx et addPhase 2773 2773 ! DC: make sure the final "1" index was meant for 1st H2O phase (vapor) !!! 2774 2774 tr_seri(:,:,strIdx(tracers(:)%name,addPhase('H2O','g'))) = 0.0 … … 3193 3193 ! Calculs de l'orbite. 3194 3194 ! Necessaires pour le rayonnement et la surface (calcul de l'albedo). 3195 ! doit donc etre plac \'e avant radlwsw et pbl_surface3195 ! doit donc etre place avant radlwsw et pbl_surface 3196 3196 3197 3197 ! !! jyg 17 Sep 2010 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 3447 3447 & d_xt_vdf,d_xt_vdf_w,d_xt_vdf_x, & 3448 3448 & xtsol,dxtevap,zxxtsnow,zxfluxxt,fluxxt, & 3449 & h1_diag,runoff_diag,xtrunoff_diag & 3449 & h1_diag,runoff_diag,xtrunoff_diag, & 3450 & xtriverflow,xtcoastalflow & 3450 3451 #endif 3451 3452 & ) … … 3961 3962 IF (ok_cvl) THEN ! new driver for convectL 3962 3963 ! 3964 3963 3965 #ifdef ISO 3964 3966 #ifdef ISOVERIF … … 4528 4530 IF (rneb(i,k)==0.) THEN 4529 4531 ! On ne tient compte des tendances qu'en dehors des 4530 ! nuages (c'est- \`a-dire a priri dans une region ou4532 ! nuages (c'est-a-dire a priori dans une region ou 4531 4533 ! l'eau se reevapore). 4532 4534 dt_dwn(i,k)= dt_dwn(i,k)+ & … … 4860 4862 ! Ne change pas les resultats avec les isotopes tant qu'on 4861 4863 ! tourne avec le defaut : iflag_thermals_tenv=0 4862 if ( iflag_thermals_tenv /= 0 ) then4864 IF ( iflag_thermals_tenv /= 0 ) THEN 4863 4865 abort_message ='iflag_thermals_env/=0 : non prevu avec les isotopes' 4864 4866 CALL abort_physic (modname,abort_message,1) 4865 endif4867 ENDIF 4866 4868 CALL calltherm(itap, pdtphys & 4867 4869 ,pplay,paprs,pphi,weak_inversion & … … 4897 4899 IF (mod(iflag_pbl_split/10,10) .GE. 1) THEN 4898 4900 ! Si les thermiques ne sont presents que hors des 4899 ! poches, la tendance moyenne associ \'ee doit etre4901 ! poches, la tendance moyenne associee doit etre 4900 4902 ! multipliee par la fraction surfacique qu'ils couvrent. 4901 4903 IF (mod(iflag_pbl_split/10,10) == 1) THEN … … 4915 4917 d_deltat_the(:,:) = 0. 4916 4918 d_deltaq_the(:,:) = 0. 4919 #ifdef ISO 4920 DO ixt=1,ntraciso 4921 d_deltaxt_the(ixt,i,k) = 0. 4922 ENDDO 4923 #endif 4917 4924 ENDIF 4918 4925 … … 5046 5053 #endif 5047 5054 !#ifdef ISO 5055 5048 5056 IF (iflag_thermals==0) THEN 5049 5057 ! Calling adjustment alone (but not the thermal plume model) … … 7106 7114 da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij, & 7107 7115 epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con, & 7108 ev,wdtrainAS, wdtrainM,wght_cvfd,&7116 ev,wdtrainAS,wdtrainM,wght_cvfd, & 7109 7117 fm_therm, entr_therm, rneb, & 7110 7118 beta_prec_fisrt,beta_prec, & … … 7295 7303 ! ces variables sont diagnostiques, donc pas indispensables 7296 7304 7305 #ifdef ISO 7306 xtprw(:, :) = 0. ! isotopic precipitable water 7307 uxtflux(:, :) = 0. ! zonal humidity transport 7308 vxtflux(:, :) = 0. ! meridional humidity transport 7309 DO k = 1, klev 7310 DO i = 1, klon 7311 DO ixt =1, ntraciso 7312 xtprw(ixt, i) = xtprw(ixt, i) + xt_seri(ixt, i, k) * zmasse(i, k) 7313 uxtflux(ixt, i) = uxtflux(ixt, i) + xt_seri(ixt, i, k) * zmasse(i ,k) * u_seri(i ,k) 7314 vxtflux(ixt, i) = vxtflux(ixt, i) + xt_seri(ixt, i, k) * zmasse(i ,k) * v_seri(i ,k) 7315 ENDDO 7316 ENDDO 7317 ENDDO 7318 #endif 7319 7297 7320 !======================================================================= 7298 7321 ! SORTIES -
LMDZ6/trunk/libf/phylmdiso/reevap.F90
r5894 r5927 25 25 USE yomcst_mod_h 26 26 USE yoethf_mod_h 27 IMPLICIT none 27 28 IMPLICIT NONE 29 28 30 !>====================================================================== 29 31 30 32 INTEGER klon,klev,iflag_ice_thermo 31 REAL, DIMENSION(klon,klev), INTENT(IN):: t_seri32 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN) ::qx33 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_eva34 REAL, DIMENSION(klon,klev,nqtot), INTENT(OUT) :: d_qx_eva33 REAL, DIMENSION(klon,klev), INTENT(IN) :: t_seri 34 REAL, DIMENSION(klon,klev,nqtot), INTENT(IN) :: qx 35 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_eva 36 REAL, DIMENSION(klon,klev,nqtot), INTENT(OUT) :: d_qx_eva 35 37 36 38 REAL za,zb,zdelta,zlvdcp,zlsdcp … … 39 41 40 42 !--------Stochastic Boundary Layer Triggering: ALE_BL-------- 41 !---Propri \'et\'es du thermiques au LCL43 !---Proprietes du thermiques au LCL 42 44 43 45 include "FCTTRE.h" … … 89 91 ELSE 90 92 91 !CR: on r \'e-\'evapore eau liquide et glace93 !CR: on re-evapore eau liquide et glace 92 94 93 95 ! zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k))) … … 111 113 ENDIF 112 114 113 114 115 ENDDO 115 116 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.
