Changeset 1176 for LMDZ4/branches/LMDZ4-dev/libf/dyn3d
- Timestamp:
- Jun 11, 2009, 10:54:10 AM (16 years ago)
- Location:
- LMDZ4/branches/LMDZ4-dev/libf/dyn3d
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.F
r1114 r1176 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 c … … 30 30 #include "ener.h" 31 31 #include "description.h" 32 #include "iniprint.h" 32 33 33 34 c------------------------------------------------------------------- … … 74 75 DATA dum/.true./ 75 76 77 integer,save :: countcfl=0 78 real cflx(ip1jmp1,llm) 79 real cfly(ip1jm,llm) 80 real cflz(ip1jmp1,llm) 81 real, save :: cflxmax(llm),cflymax(llm),cflzmax(llm) 76 82 77 83 IF(iadvtr.EQ.0) THEN … … 139 145 ENDDO 140 146 147 148 c------------------------------------------------------------------- 149 ! Calcul des criteres CFL en X, Y et Z 150 c------------------------------------------------------------------- 151 152 if (countcfl == 0. ) then 153 cflxmax(:)=0. 154 cflymax(:)=0. 155 cflzmax(:)=0. 156 endif 157 158 countcfl=countcfl+iapp_tracvl 159 cflx(:,:)=0. 160 cfly(:,:)=0. 161 cflz(:,:)=0. 162 do l=1,llm 163 do ij=iip2,ip1jm-1 164 if (pbarug(ij,l)>=0.) then 165 cflx(ij,l)=pbarug(ij,l)*dtvr/masse(ij,l) 166 else 167 cflx(ij,l)=-pbarug(ij,l)*dtvr/masse(ij+1,l) 168 endif 169 enddo 170 enddo 171 do l=1,llm 172 do ij=iip2,ip1jm-1,iip1 173 cflx(ij+iip1,l)=cflx(ij,l) 174 enddo 175 enddo 176 177 do l=1,llm 178 do ij=1,ip1jm 179 if (pbarvg(ij,l)>=0.) then 180 cfly(ij,l)=pbarvg(ij,l)*dtvr/masse(ij,l) 181 else 182 cfly(ij,l)=-pbarvg(ij,l)*dtvr/masse(ij+iip1,l) 183 endif 184 enddo 185 enddo 186 187 do l=2,llm 188 do ij=1,ip1jm 189 if (wg(ij,l)>=0.) then 190 cflz(ij,l)=wg(ij,l)*dtvr/masse(ij,l) 191 else 192 cflz(ij,l)=-wg(ij,l)*dtvr/masse(ij,l-1) 193 endif 194 enddo 195 enddo 196 197 do l=1,llm 198 cflxmax(l)=max(cflxmax(l),maxval(cflx(:,l))) 199 cflymax(l)=max(cflymax(l),maxval(cfly(:,l))) 200 cflzmax(l)=max(cflzmax(l),maxval(cflz(:,l))) 201 enddo 202 203 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 204 ! Par defaut, on sort le diagnostic des CFL tous les jours. 205 ! Si on veut le sortir a chaque pas d'advection en cas de plantage 206 ! if (countcfl==iapp_tracvl) then 207 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 208 if (countcfl==day_step) then 209 do l=1,llm 210 write(lunout,*) 'L, CFLmax ' 211 s ,l,maxval(cflx(:,l)),maxval(cfly(:,l)),maxval(cflz(:,l)) 212 enddo 213 countcfl=0 214 endif 215 141 216 c------------------------------------------------------------------- 142 217 c Advection proprement dite (Modification Le Croller (07/2001) -
LMDZ4/branches/LMDZ4-dev/libf/dyn3d/comconst.h
r1106 r1176 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 !----------------------------------------------------------------------- … … 7 7 COMMON/comconst/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl, & 8 8 & dtvr,daysec, & 9 & pi,dtphys,dtdiss,rad,r,cpp,kappa,cotot,unsim,g,omeg 9 & pi,dtphys,dtdiss,rad,r,cpp,kappa,cotot,unsim,g,omeg & 10 & ,dissip_factz,dissip_deltaz,dissip_zref 11 10 12 11 13 INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl … … 13 15 REAL pi,dtphys,dtdiss,rad,r,cpp,kappa 14 16 REAL cotot,unsim,g,omeg 17 REAL dissip_factz,dissip_deltaz,dissip_zref 15 18 16 19 !----------------------------------------------------------------------- -
LMDZ4/branches/LMDZ4-dev/libf/dyn3d/conf_gcm.F
r1143 r1176 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 c … … 38 38 #include "serre.h" 39 39 #include "comdissnew.h" 40 #include "comconst.h" 40 41 41 42 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique … … 267 268 tetatemp = 7200. 268 269 CALL getin('tetatemp',tetatemp ) 270 271 ! Parametres controlant la variation sur la verticale des constantes de 272 ! dissipation. 273 ! Pour le moment actifs uniquement dans la version a 39 niveaux 274 ! avec ok_strato=y 275 276 dissip_factz=4. 277 dissip_deltaz=10. 278 dissip_zref=30. 279 CALL getin('dissip_factz',dissip_factz ) 280 CALL getin('dissip_deltaz',dissip_deltaz ) 281 CALL getin('dissip_zref',dissip_zref ) 269 282 270 283 !Config Key = coefdis -
LMDZ4/branches/LMDZ4-dev/libf/dyn3d/inidissip.F
r524 r1176 1 1 ! 2 ! $ Header$2 ! $Id$ 3 3 ! 4 4 SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh , … … 18 18 #include "comvert.h" 19 19 #include "control.h" 20 #include "logic.h" 20 21 21 22 LOGICAL lstardis … … 29 30 INTEGER l,ij,idum,ii 30 31 REAL tetamin 32 REAL pseudoz 31 33 32 34 REAL ran1 … … 174 176 c -------------------------------------------------- 175 177 176 DO l=1,llm 177 zvert(l)=1. 178 ENDDO 179 180 fact=2. 181 c 182 DO l = 1, llm 183 zz = 1. - preff/presnivs(l) 184 zvert(l)= fact -( fact-1.)/( 1.+zz*zz ) 185 ENDDO 178 if (ok_strato .and. llm==39) then 179 do l=1,llm 180 pseudoz=8.*log(preff/presnivs(l)) 181 zvert(l)=1+ 182 s (tanh((pseudoz-dissip_zref)/dissip_deltaz)+1.)/2. 183 s *(dissip_factz-1.) 184 enddo 185 else 186 DO l=1,llm 187 zvert(l)=1. 188 ENDDO 189 fact=2. 190 DO l = 1, llm 191 zz = 1. - preff/presnivs(l) 192 zvert(l)= fact -( fact-1.)/( 1.+zz*zz ) 193 ENDDO 194 endif 186 195 187 196
Note: See TracChangeset
for help on using the changeset viewer.