- Timestamp:
- Mar 15, 2010, 5:28:36 PM (15 years ago)
- Location:
- LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/calfis_p.F
r1299 r1325 180 180 REAL,SAVE,ALLOCATABLE :: flxwfi_omp(:,:) ! Flux de masse verticale sur la grille physiq 181 181 182 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 183 ! Introduction du splitting (FH) 184 ! Question pour Yann : 185 ! J'ai été surpris au début que les tableaux zufi_omp, zdufi_omp n'co soitent 186 ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'il 187 ! soit allocatable (plutot par exemple que de passer une dimension 188 ! dépendant du process en argument des routines) et que, du coup, 189 ! le SAVE évite d'avoir à refaire l'allocation à chaque appel. 190 ! Tu confirmes ? 191 ! J'ai suivi le même principe pour les zdufic_omp 192 ! Mais c'est surement bien que tu controles. 193 ! 194 195 REAL,ALLOCATABLE,SAVE :: zdufic_omp(:,:) 196 REAL,ALLOCATABLE,SAVE :: zdvfic_omp(:,:) 197 REAL,ALLOCATABLE,SAVE :: zdtfic_omp(:,:) 198 REAL,ALLOCATABLE,SAVE :: zdqfic_omp(:,:,:) 199 REAL jH_cur_split,zdt_split 200 LOGICAL debut_split,lafin_split 201 INTEGER isplit 202 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 203 182 204 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp, 183 205 c$OMP+ presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp, 184 206 c$OMP+ zqfi_omp,zdufi_omp,zdvfi_omp, 185 c$OMP+ zdtfi_omp,zdqfi_omp,zdpsrf_omp,flxwfi_omp) 207 c$OMP+ zdtfi_omp,zdqfi_omp,zdpsrf_omp,flxwfi_omp, 208 c$OMP+ zdufic_omp,zdvfic_omp,zdtfic_omp,zdqfic_omp) 186 209 187 210 LOGICAL,SAVE :: first_omp=.true. … … 498 521 allocate(zdtfi_omp(klon,llm)) 499 522 allocate(zdqfi_omp(klon,llm,nqtot)) 523 allocate(zdufic_omp(klon,llm)) 524 allocate(zdvfic_omp(klon,llm)) 525 allocate(zdtfic_omp(klon,llm)) 526 allocate(zdqfic_omp(klon,llm,nqtot)) 500 527 allocate(zdpsrf_omp(klon)) 501 528 allocate(flxwfi_omp(klon,llm)) … … 600 627 if (planet_type=="earth") then 601 628 #ifdef CPP_EARTH 629 630 print*,'PHYSIQUE AVEC NSPLIT_PHYS=',nsplit_phys 631 zdt_split=dtphys/nsplit_phys 632 zdufic_omp(:,:)=0. 633 zdvfic_omp(:,:)=0. 634 zdtfic_omp(:,:)=0. 635 zdqfic_omp(:,:,:)=0. 636 637 do isplit=1,nsplit_phys 638 639 jH_cur_split=jH_cur+(isplit-1) * dtvr / (daysec *nsplit_phys) 640 debut_split=debut.and.isplit==1 641 lafin_split=lafin.and.isplit==nsplit_phys 642 643 602 644 CALL physiq (klon, 603 645 . llm, 604 . debut ,605 . lafin ,646 . debut_split, 647 . lafin_split, 606 648 . jD_cur, 607 . jH_cur ,608 . dtphys,649 . jH_cur_split, 650 . zdt_split, 609 651 . zplev_omp, 610 652 . zplay_omp, … … 628 670 . pducov, 629 671 . PVteta) 672 673 zufi_omp(:,:)=zufi_omp(:,:)+zdufi_omp(:,:)*zdt_split 674 zvfi_omp(:,:)=zvfi_omp(:,:)+zdvfi_omp(:,:)*zdt_split 675 ztfi_omp(:,:)=ztfi_omp(:,:)+zdtfi_omp(:,:)*zdt_split 676 zqfi_omp(:,:,:)=zqfi_omp(:,:,:)+zdqfi_omp(:,:,:)*zdt_split 677 678 zdufic_omp(:,:)=zdufic_omp(:,:)+zdufi_omp(:,:) 679 zdvfic_omp(:,:)=zdvfic_omp(:,:)+zdvfi_omp(:,:) 680 zdtfic_omp(:,:)=zdtfic_omp(:,:)+zdtfi_omp(:,:) 681 zdqfic_omp(:,:,:)=zdqfic_omp(:,:,:)+zdqfi_omp(:,:,:) 682 683 enddo 684 685 zdufi_omp(:,:)=zdufic_omp(:,:)/nsplit_phys 686 zdvfi_omp(:,:)=zdvfic_omp(:,:)/nsplit_phys 687 zdtfi_omp(:,:)=zdtfic_omp(:,:)/nsplit_phys 688 zdqfi_omp(:,:,:)=zdqfic_omp(:,:,:)/nsplit_phys 689 630 690 #endif 631 691 endif !of if (planet_type=="earth") -
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/conf_gcm.F
r1299 r1325 173 173 CALL getin('day_step',day_step) 174 174 175 !Config Key = nsplit_phys 176 !Config Desc = nombre d'iteration de la physique 177 !Config Def = 240 178 !Config Help = nombre d'itration de la physique 179 ! 180 nsplit_phys = 1 181 CALL getin('nsplit_phys',nsplit_phys) 182 175 183 !Config Key = iperiod 176 184 !Config Desc = periode pour le pas Matsuno … … 603 611 write(lunout,*)' day_step = ', day_step 604 612 write(lunout,*)' iperiod = ', iperiod 613 write(lunout,*)' nsplit_phys = ', nsplit_phys 605 614 write(lunout,*)' iconser = ', iconser 606 615 write(lunout,*)' iecri = ', iecri -
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/control_mod.F90
r1299 r1325 11 11 12 12 REAL :: periodav 13 INTEGER :: nday,day_step,iperiod,iapp_tracvl 13 INTEGER :: nday,day_step,iperiod,iapp_tracvl,nsplit_phys 14 14 INTEGER :: iconser,iecri,idissip,iphysiq,iecrimoy 15 15 INTEGER :: dayref,anneeref, raz_date, ip_ebil_dyn -
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/gcm.F
r1316 r1325 422 422 if (planet_type.eq."earth") then 423 423 #ifdef CPP_EARTH 424 CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys ,424 CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys , 425 425 , latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp ) 426 426 #endif
Note: See TracChangeset
for help on using the changeset viewer.