Changeset 1707 for LMDZ5/branches/testing/libf/dyn3dpar
- Timestamp:
- Jan 11, 2013, 10:19:19 AM (12 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 3 deleted
- 13 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1670-1692,1694-1703,1705-1706
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3dpar/calfis_p.F
r1669 r1707 684 684 . debut_split, !! firstcall 685 685 . lafin_split, !! lastcall 686 . float(day_ini), !! pday <-- day_ini (dans temps.h)686 . jD_cur, !! pday. see leapfrog_p 687 687 . jH_cur_split, !! ptime "fraction of day" 688 688 . zdt_split, !! ptimestep -
LMDZ5/branches/testing/libf/dyn3dpar/comconst.h
r1505 r1707 21 21 REAL dtdiss ! (s) time step for the dissipation 22 22 REAL rad ! (m) radius of the planet 23 REAL r ! Gas constant R=8.31 J.K-1.mol-1 24 REAL cpp ! Cp 23 REAL r ! Reduced Gas constant r=R/mu 24 ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol) 25 REAL cpp ! Specific heat Cp (J.kg-1.K-1) 25 26 REAL kappa ! kappa=R/Cp 26 27 REAL cotot -
LMDZ5/branches/testing/libf/dyn3dpar/comdissnew.h
r1319 r1707 12 12 13 13 COMMON/comdissnew/ lstardis,nitergdiv,nitergrot,niterh,tetagdiv, & 14 & tetagrot,tetatemp,coefdis 14 & tetagrot,tetatemp,coefdis, vert_prof_dissip 15 15 16 16 LOGICAL lstardis 17 17 INTEGER nitergdiv, nitergrot, niterh 18 19 integer vert_prof_dissip ! vertical profile of horizontal dissipation 20 ! Allowed values: 21 ! 0: rational fraction, function of pressure 22 ! 1: tanh of altitude 23 18 24 REAL tetagdiv, tetagrot, tetatemp, coefdis 19 25 -
LMDZ5/branches/testing/libf/dyn3dpar/conf_gcm.F
r1665 r1707 6 6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 7 7 c 8 USE control_mod 8 9 #ifdef CPP_IOIPSL 9 10 use IOIPSL … … 16 17 use mod_hallo, ONLY : use_mpi_alloc 17 18 use parallel, ONLY : omp_chunk 18 USE control_mod19 19 USE infotrac, ONLY : type_trac 20 use assert_m, only: assert 21 20 22 IMPLICIT NONE 21 23 c----------------------------------------------------------------------- … … 43 45 #include "serre.h" 44 46 #include "comdissnew.h" 45 !#include "clesphys.h"46 #include "iniprint.h"47 47 #include "temps.h" 48 48 #include "comconst.h" 49 49 50 50 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 51 ! #include "clesphys.h" 52 #include "iniprint.h" 51 53 c 52 54 c … … 105 107 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write', 106 108 & STATUS='unknown',FORM='formatted') 107 108 109 ENDIF 109 110 … … 185 186 186 187 !Config Key = nsplit_phys 187 !Config Desc = nombre d'iteration de la physique188 !Config Def = 240189 !Config Help = nombre d'itration de la physique190 !191 188 nsplit_phys = 1 192 189 CALL getin('nsplit_phys',nsplit_phys) … … 325 322 CALL getin('tau_top_bound',tau_top_bound) 326 323 327 !328 324 !Config Key = coefdis 329 325 !Config Desc = coefficient pour gamdissip … … 608 604 type_trac = 'lmdz' 609 605 CALL getin('type_trac',type_trac) 610 611 606 612 607 !Config Key = config_inca … … 830 825 831 826 !Config Key = ok_dynzon 832 !Config Desc = calcul et sortie des transports827 !Config Desc = sortie des transports zonaux dans la dynamique 833 828 !Config Def = n 834 829 !Config Help = Permet de mettre en route le calcul des transports … … 865 860 write(lunout,*)"Le zoom en longitude est incompatible", 866 861 & " avec l'utilisation du filtre FFT ", 867 & "---> filtre FFT désactivé"862 & "---> FFT filter not active" 868 863 use_filtre_fft=.FALSE. 869 864 ENDIF … … 898 893 ok_strato=.FALSE. 899 894 CALL getin('ok_strato',ok_strato) 895 896 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 897 CALL getin('vert_prof_dissip', vert_prof_dissip) 898 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, 899 $ "bad value for vert_prof_dissip") 900 900 901 901 !Config Key = ok_gradsfile … … 968 968 write(lunout,*)' type_trac = ', type_trac 969 969 write(lunout,*)' config_inca = ', config_inca 970 write(lunout,*)' ok_dynzon = ', ok_dynzon 970 write(lunout,*)' ok_dynzon = ', ok_dynzon 971 971 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 972 972 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave -
LMDZ5/branches/testing/libf/dyn3dpar/filtreg_p.F
r1665 r1707 214 214 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 215 215 #else 216 champ_fft(: ,j-jdfil+1,:)216 champ_fft(:iim,j-jdfil+1,:) 217 217 & =matmul(matrinvn(:,:,j),champ_loc(:iim,j,:)) 218 218 #endif … … 227 227 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 228 228 #else 229 champ_fft(: ,j-jdfil+1,:)229 champ_fft(:iim,j-jdfil+1,:) 230 230 & =matmul(matriceun(:,:,j),champ_loc(:iim,j,:)) 231 231 #endif … … 240 240 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 241 241 #else 242 champ_fft(: ,j-jdfil+1,:)242 champ_fft(:iim,j-jdfil+1,:) 243 243 & =matmul(matricevn(:,:,j),champ_loc(:iim,j,:)) 244 244 #endif … … 257 257 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 258 258 #else 259 champ_fft(: ,j-jdfil+1,:)259 champ_fft(:iim,j-jdfil+1,:) 260 260 & =matmul(matrinvs(:,:,j-jfiltsu+1), 261 261 & champ_loc(:iim,j,:)) … … 272 272 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 273 273 #else 274 champ_fft(: ,j-jdfil+1,:)274 champ_fft(:iim,j-jdfil+1,:) 275 275 & =matmul(matriceus(:,:,j-jfiltsu+1), 276 276 & champ_loc(:iim,j,:)) … … 287 287 & champ_fft(1,j-jdfil+1,1), iip1*nlat) 288 288 #else 289 champ_fft(: ,j-jdfil+1,:)289 champ_fft(:iim,j-jdfil+1,:) 290 290 & =matmul(matricevs(:,:,j-jfiltsv+1), 291 291 & champ_loc(:iim,j,:)) -
LMDZ5/branches/testing/libf/dyn3dpar/fxhyp.F
r1403 r1707 48 48 c 49 49 REAL dzoom 50 REAL *8xlon(iip1),xprimm(iip1),xuv51 REAL *8xtild(0:nmax2)52 REAL *8fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)53 REAL *8Xf(0:nmax2),xxpr(0:nmax2)54 REAL *8xvrai(iip1),xxprim(iip1)55 REAL *8pi,depi,epsilon,xzoom,fa,fb56 REAL *8Xf1, Xfi , a0,a1,a2,a3,xi250 REAL(KIND=8) xlon(iip1),xprimm(iip1),xuv 51 REAL(KIND=8) xtild(0:nmax2) 52 REAL(KIND=8) fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2) 53 REAL(KIND=8) Xf(0:nmax2),xxpr(0:nmax2) 54 REAL(KIND=8) xvrai(iip1),xxprim(iip1) 55 REAL(KIND=8) pi,depi,epsilon,xzoom,fa,fb 56 REAL(KIND=8) Xf1, Xfi , a0,a1,a2,a3,xi2 57 57 INTEGER i,it,ik,iter,ii,idif,ii1,ii2 58 REAL *8xi,xo1,xmoy,xlon2,fxm,Xprimin59 REAL *8champmin,champmax,decalx58 REAL(KIND=8) xi,xo1,xmoy,xlon2,fxm,Xprimin 59 REAL(KIND=8) champmin,champmax,decalx 60 60 INTEGER is2 61 61 SAVE is2 62 62 63 REAL *8heavyside63 REAL(KIND=8) heavyside 64 64 65 65 pi = 2. * ASIN(1.) … … 68 68 xzoom = xzoomdeg * pi/180. 69 69 c 70 if (iim==1) then 71 72 print*,'Longitudes calculees a la main pour iim=1' 73 74 rlonm025(1)=-pi/2. 75 rlonv(1)=0. 76 rlonu(1)=pi 77 rlonp025(1)=pi/2. 78 rlonm025(2)=rlonm025(1)+depi 79 rlonv(2)=rlonv(1)+depi 80 rlonu(2)=rlonu(1)+depi 81 rlonp025(2)=rlonp025(1)+depi 82 83 xprimm025(:)=1. 84 xprimv(:)=1. 85 xprimu(:)=1. 86 xprimp025(:)=1. 87 champmin=depi 88 champmax=depi 89 return 90 91 endif 92 70 93 decalx = .75 71 94 IF( grossism.EQ.1..AND.scal180 ) THEN … … 286 309 287 310 311 288 312 IF(ik.EQ.1.and.grossism.EQ.1.) THEN 289 313 xvrai(1) = xvrai(iip1)-depi 290 314 xxprim(1) = xxprim(iip1) 291 315 ENDIF 316 292 317 DO i = 1 , iim 293 318 xlon(i) = xvrai(i) -
LMDZ5/branches/testing/libf/dyn3dpar/gcm.F
r1665 r1707 418 418 419 419 CALL inidissip( lstardis, nitergdiv, nitergrot, niterh , 420 * tetagdiv, tetagrot , tetatemp 420 * tetagdiv, tetagrot , tetatemp, vert_prof_dissip) 421 421 422 422 c----------------------------------------------------------------------- 423 423 c Initialisation de la physique : 424 424 c ------------------------------- 425 IF (call_iniphys.and. iflag_phys.eq.1) THEN425 IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100)) THEN 426 426 latfi(1)=rlatu(1) 427 427 lonfi(1)=0. … … 446 446 ! Physics: 447 447 #ifdef CPP_PHYS 448 CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys , 449 , latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp ) 448 CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys, 449 & latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp, 450 & iflag_phys) 450 451 #endif 451 452 call_iniphys=.false. 452 ENDIF ! of IF (call_iniphys.and.(iflag_phys .eq.1))453 ENDIF ! of IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100)) 453 454 454 455 … … 481 482 301 FORMAT('1'/,15x,'run du ', i2,'/',i2,'/',i4) 482 483 302 FORMAT('1'/,15x,' au ', i2,'/',i2,'/',i4) 483 #endif484 485 #ifdef CPP_PHYS486 ! Create start file (startphy.nc) and boundary conditions (limit.nc)487 ! for the Earth verstion488 if (iflag_phys>=100) then489 call iniaqua(ngridmx,latfi,lonfi,iflag_phys)490 endif491 484 #endif 492 485 -
LMDZ5/branches/testing/libf/dyn3dpar/groupe_p.F
r764 r1707 37 37 integer i,j,l 38 38 39 logical firstcall 40 save firstcall 41 c$OMP THREADPRIVATE(firstcall )39 logical firstcall,groupe_ok 40 save firstcall,groupe_ok 41 c$OMP THREADPRIVATE(firstcall,groupe_ok) 42 42 43 43 data firstcall/.true./ 44 data groupe_ok/.true./ 45 44 46 integer ijb,ije,jjb,jje 45 47 48 if (iim==1) then 49 groupe_ok=.false. 50 endif 51 46 52 if (firstcall) then 47 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre ede point' 53 if (groupe_ok) then 54 if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point' 55 endif 48 56 firstcall=.false. 49 57 endif … … 66 74 c$OMP END DO NOWAIT 67 75 68 call groupeun_p(jjp1,llm,jjb,jje,zconvmm) 76 if (groupe_ok) then 77 call groupeun_p(jjp1,llm,jjb,jje,zconvmm) 78 endif 69 79 70 80 jjb=jj_begin-1 … … 78 88 c$OMP END DO NOWAIT 79 89 80 call groupeun_p(jjm,llm,jjb,jje,pbarvm) 90 if (groupe_ok) then 91 call groupeun_p(jjm,llm,jjb,jje,pbarvm) 92 endif 81 93 82 94 c Champs 3D … … 101 113 enddo 102 114 c$OMP END DO NOWAIT 115 103 116 c integration de la convergence de masse de haut en bas ...... 104 117 -
LMDZ5/branches/testing/libf/dyn3dpar/inidissip.F90
r1665 r1707 3 3 ! 4 4 SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh , & 5 tetagdiv,tetagrot,tetatemp 5 tetagdiv,tetagrot,tetatemp, vert_prof_dissip) 6 6 !======================================================================= 7 7 ! initialisation de la dissipation horizontale … … 25 25 INTEGER,INTENT(in) :: nitergdiv,nitergrot,niterh 26 26 REAL,INTENT(in) :: tetagdiv,tetagrot,tetatemp 27 28 integer, INTENT(in):: vert_prof_dissip 29 ! Vertical profile of horizontal dissipation 30 ! Allowed values: 31 ! 0: rational fraction, function of pressure 32 ! 1: tanh of altitude 27 33 28 34 ! Local variables: … … 167 173 ! -------------------------------------------------- 168 174 169 if ( ok_strato .and. llm==39) then175 if (vert_prof_dissip == 1) then 170 176 do l=1,llm 171 177 pseudoz=8.*log(preff/presnivs(l)) -
LMDZ5/branches/testing/libf/dyn3dpar/leapfrog_p.F
r1665 r1707 139 139 REAL :: secondes 140 140 141 logical :: physic 141 142 LOGICAL first,callinigrads 142 143 … … 208 209 209 210 itau = 0 211 physic=.true. 212 if (iflag_phys==0.or.iflag_phys==2) physic=.false. 210 213 ! iday = day_ini+itau/day_step 211 214 ! time = REAL(itau-(iday-day_ini)*day_step)/day_step+time_0 … … 364 367 s apdiss = .TRUE. 365 368 IF( MOD(itau,iphysiq ).EQ.0.AND..NOT.forward 366 s .and. iflag_phys.EQ.1) apphys = .TRUE.369 s .and. physic ) apphys = .TRUE. 367 370 ELSE 368 371 ! Leapfrog/Matsuno time stepping … … 370 373 IF( MOD(itau+1,dissip_period).EQ.0 .AND. .NOT. forward ) 371 374 s apdiss = .TRUE. 372 IF( MOD(itau+1,iphysiq).EQ.0.AND. iflag_phys.EQ.1) apphys=.TRUE.375 IF( MOD(itau+1,iphysiq).EQ.0.AND.physic) apphys=.TRUE. 373 376 END IF 374 377 … … 707 710 jD_cur = jD_ref + day_ini - day_ref 708 711 $ + itau/day_step 712 713 IF (planet_type .eq."generic") THEN 714 ! AS: we make jD_cur to be pday 715 jD_cur = int(day_ini + itau/day_step) 716 ENDIF 717 709 718 jH_cur = jH_ref + start_time + & 710 719 & mod(itau,day_step)/float(day_step) -
LMDZ5/branches/testing/libf/dyn3dpar/parallel.F90
r1664 r1707 489 489 enddo 490 490 491 endif 491 else 492 ! Ehouarn: When in debug mode, ifort complains (for call MPI_GATHERV 493 ! below) about Buffer_Recv() being not allocated. 494 ! So make a dummy allocation. 495 allocate(Buffer_Recv(1)) 496 endif ! of if (MPI_Rank==rank) 492 497 493 498 !$OMP CRITICAL (MPI) -
LMDZ5/branches/testing/libf/dyn3dpar/paramet.h
r792 r1707 17 17 INTEGER jcfil,jcfllm 18 18 19 PARAMETER( iip1= iim+1 -1/iim,iip2=iim+2,iip3=iim+3&19 PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 & 20 20 & ,jjp1=jjm+1-1/jjm) 21 21 PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 )
Note: See TracChangeset
for help on using the changeset viewer.