Changeset 5927 for LMDZ6/trunk/libf/dynphy_lonlat
- Timestamp:
- Dec 12, 2025, 5:26:10 PM (3 days ago)
- Location:
- LMDZ6/trunk/libf/dynphy_lonlat
- Files:
-
- 3 edited
-
calfis.f90 (modified) (6 diffs)
-
calfis_loc.F90 (modified) (21 diffs)
-
phylmd/iniphysiq_mod.F90 (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
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 ! =======================================================================
Note: See TracChangeset
for help on using the changeset viewer.
