Changeset 204 for LMDZ.3.3/trunk/libf/dyn3d/redecoupenc.F
- Timestamp:
- Apr 13, 2001, 12:44:53 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/trunk/libf/dyn3d/redecoupenc.F
r198 r204 1 c 1 2 c $Header 3 c 2 4 SUBROUTINE redecoupenc 3 5 s (irec,massemn,pbarun,pbarvn,wn,tetan,phin, 4 s nrec,avant,airefi ,5 s zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkz,6 s yu1 ,yv1,ftsol,pctsrf,7 s frac_impa ,frac_nucl,phisn)6 s nrec,avant,airefin,phisfin, 7 s tn,zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkzn, 8 s yu1n,yv1n,ftsoln,pctsrfn, 9 s frac_impan,frac_nucln,phisn) 8 10 9 11 IMPLICIT NONE … … 11 13 #include "dimensions.h" 12 14 #include "paramet.h" 13 14 15 #include "comvert.h" 15 16 #include "comconst.h" 16 17 #include "comgeom2.h" 17 18 18 #include "tracstoke.h" 19 #include "logic.h" 19 20 20 21 integer irec,nrec,i,j 21 22 22 integer ig,l 23 23 integer imo,jmo,imn,jmn,ii,jj,ig … … 32 32 real zmfd(ngridn,llm),zde_d(ngridn,llm),zen_d(ngridn,llm) 33 33 real zmfu(ngridn,llm),zde_u(ngridn,llm),zen_u(ngridn,llm) 34 real mfd(ngridn,llm),de_d(ngridn,llm),en_d(ngridn,llm)35 real mfu(ngridn,llm),de_u(ngridn,llm),en_u(ngridn,llm)36 34 37 real*4 airedy(iip1,jjp1) 38 real*4 rlonu_dy(iip1,jjp1),rlonv_dy(iip1,jjm), 39 . rlatu_dy(iip1,jjp1),rlatv_dy(iip1,jjm) 40 41 real coefkz(ngridn,llm) 42 real frac_impa(ngridn,llm),frac_nucl(ngridn,llm) 43 real yu1(ngridn), yv1(ngridn) 44 real ftsol(ngridn,nbsrf),pctsrf(ngridn,nbsrf) 45 integer imfu,imfd,ien_u,ide_u, 46 s ien_d,ide_d, 47 s icoefkz,izu1,izv1, 48 s itsol,ipsf, 49 s ilei, ilec 50 parameter(imfu=1,imfd=llm+1,ien_u=2*llm+1,ide_u=3*llm+1, 51 s ien_d=4*llm+1,ide_d=5*llm+1, 52 s icoefkz=6*llm+1, 53 s ilei=7*llm+1,ilec=8*llm+1, 54 s izu1=9*llm+1,izv1=9*llm+2, 55 s itsol=9*llm+3,ipsf=9*llm+3+nbsrf) 56 logical avant 57 35 logical avant 58 36 59 37 real massefi(ngridn,llm) … … 63 41 real wn(imn+1,jmn+1,llm),phin(imn+1,jmn+1,llm) 64 42 real phisn(imn+1,jmn+1) 65 real phisfi(imn,jmn+1) 43 66 44 real massemo(imo+1,jmo+1,llm),tetao(imo+1,jmo+1,llm) 67 45 real pbaruo(imo+1,jmo+1,llm),pbarvo(imo+1,jmo,llm) … … 71 49 real pbarvst(imo+1,jmo+1,llm) 72 50 73 real airefi(ngridn) 74 75 real xlecn(ngridn,9*llm+2+2*nbsrf),tmpn(imn+1,jmn+1) 76 real xleco(ngrido,9*llm+2+2*nbsrf),tmpo(imo+1,jmo+1) 51 real tmpo2(imo+1,jmo+1,llm),tmpo1(imo,jmo+1,llm) 52 real tmpo4(imo+1,jmo+1,nbsrf),tmpo3(imo,jmo+1,nbsrf) 53 real tmpo6(imo+1,jmo+1),tmpo5(imo,jmo+1) 54 real tmpn6(imn+1,jmn+1),tmpn5(imn,jmn+1) 55 real tmpn2(imn+1,jmn+1,llm),tmpn1(imn,jmn+1,llm) 56 real tmpn4(imn+1,jmn+1,nbsrf),tmpn3(imn,jmn+1,nbsrf) 57 58 real airefio(ngrido),phisfio(ngrido), 59 . mfuo(ngrido,llm),mfdo(ngrido,llm),en_uo(ngrido,llm), 60 . de_uo(ngrido,llm),en_do(ngrido,llm), 61 . de_do(ngrido,llm),coefkzo(ngrido,llm), 62 . frac_impao(ngrido,llm),frac_nuclo(ngrido,llm), 63 . yu1o(ngrido),yv1o(ngrido),ftsolo(ngrido,nbsrf), 64 . pctsrfo(ngrido,nbsrf),to(ngrido,llm) 65 66 real airefin(ngridn),phisfin(ngridn), 67 . mfun(ngridn,llm),en_un(ngridn,llm),mfdn(ngridn,llm), 68 . de_un(ngridn,llm),en_dn(ngridn,llm), 69 . de_dn(ngridn,llm),coefkzn(ngridn,llm), 70 . frac_impan(ngridn,llm),frac_nucln(ngridn,llm), 71 . ftsoln(ngridn,nbsrf),yu1n(ngridn),yv1n(ngridn), 72 . pctsrfn(ngridn,nbsrf),tn(ngridn,llm) 77 73 78 74 real zcontrole(ngridn),zmass,tmpdyn(imn+1,jmn+1),zflux 79 75 80 real ziadvtrac,z rec,ziadvtrac2,zrec281 real zim,zjm,zlm,zklon,zklev76 real ziadvtrac,ziadvtrac2,zrec2 77 integer zim,zjm,zlm,zklon,zklev,zrec 82 78 83 79 real zpi 80 84 81 c longitudes et latitudes lues 85 real rlonul( 1:imo+1),rlatvl(1:jmo)86 real rlonvl( 1:imo+1),rlatul(1:jmo+1)82 real rlonul(imo+1,jmo+1),rlatvl(imo+1,jmo) 83 real rlonvl(imo+1,jmo),rlatul(imo+1,jmo+1) 87 84 c longitudes et latitudes anciennes 88 85 real rlonuo(0:imo+1),rlatvo(0:jmo+1) 86 real rlonvo(0:imo+1),rlatuo(0:jmo+1) 89 87 c longitudes et latitudes nouvelles 90 88 real rlonun(0:imn+1),rlatvn(0:jmn+1) 89 real rlonvn(0:imn+1),rlatun(0:jmn+1) 91 90 real aireo(imo+1,jmo+1) 92 91 … … 95 94 real alphaxo(imo+1) 96 95 real alpha(imn+1,jmn+1) 97 96 real alphat(imn+1,jmn+1,llm) 98 97 real aa,uu(0:imo+1),vv(imo+1,0:jmo+1) 99 98 … … 105 104 integer i,j 106 105 real dlatm,dlatp,dlonm,dlonp 107 108 106 c abd 107 character*10 file 108 character*10 nom 109 character*2 str2 110 c fin ab 109 111 zpi=2.*asin(1.) 110 112 … … 161 163 162 164 iest(1)=0 165 print*,'iest(1)=0' 163 166 do io=2,imo+1 164 167 iest(io)=iest(io-1)+ndecx(io-1) 165 168 iouest(io-1)=iest(io) 169 print*,'iest(',io,')=',iest(io),'iouest(' 170 s ,io-1,')=',iouest(io-1) 171 166 172 enddo 167 173 iouest(imo+1)=iest(imo+1)+ndecx(imo+1) 174 print*,'iouest(',imo+1,')=',iouest(imo+1) 168 175 169 176 jnord(1)=0 177 print*,'jnord(1)=0' 170 178 do jo=2,jmo+1 171 179 jnord(jo)=jnord(jo-1)+ndecy(jo-1) 172 180 jsud(jo-1)=jnord(jo) 181 print*,'jnord(',jo,')=',jnord(jo),'jsud(' 182 s ,jo-1,')=',jsud(jo-1) 173 183 enddo 174 184 jsud(jmo+1)=jnord(jmo+1)+ndecy(jmo+1) 185 print*,'jsud(',jmo+1,')=',jsud(jmo+1) 175 186 176 187 c================================================================== … … 182 193 CALL read_fstoke(0, 183 194 . zrec,zim,zjm,zlm, 184 . rlonu _dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,195 . rlonul,rlonvl,rlatul,rlatvl,aireo,phiso, 185 196 . massemo,pbaruo,pbarvo,wo,tetao,phio) 186 187 197 198 print*,'zrec,zdtvr,ziadvtrac,zim,zjm,zlm' 188 199 print*,zrec,zdtvr,ziadvtrac,zim,zjm,zlm 189 190 if((imo-nint(zim))*(jmo-nint(zjm)).ne.0) then191 print*,'Modifier les dimensions dans redecoupe '192 print*,'Mettre imo=',zim,' jmo=',zjm193 stop194 endif195 196 CALL read_pstoke(0,197 . zrec,zklon,zklev,airefi,phisfi,198 . mfu,mfd,en_u,de_u,en_d,de_d,coefkz,199 . frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf)200 201 print*,'Entete du fichier physique'202 print*,zrec2,ziadvtrac2,zklon,zklev203 200 204 201 nrec=zrec … … 207 204 istphy=ziadvtrac2 208 205 206 print*,'rlonul ' 207 do io=1,imo+1 208 print*,io,rlonul(io,1) 209 enddo 210 print*,'rlonvl ' 211 do io=1,imo+1 212 print*,io,rlonvl(io,1) 213 enddo 214 print*,'rlatul ' 215 do jo=1,jmo+1 216 print*,jo,rlatul(1,jo) 217 enddo 218 print*,'rlatvl' 219 do jo=1,jmo 220 print*,jo,rlatvl(1,jo) 221 enddo 222 223 c if((imo-nint(zim))*(jmo-nint(zjm)).ne.0) then 224 c print*,'Modifier les dimensions dans redecoupe ' 225 c print*,'Mettre imo=',zim,' jmo=',zjm 226 c abderr stop 227 c endif 228 229 c abderrahmane 230 if(physic)then 231 CALL read_pstoke(0, 232 . zrec,zklon,zklev,airefio,phisfio, 233 . to,mfuo,mfdo,en_uo,de_uo,en_do,de_do,coefkzo, 234 . frac_impao,frac_nuclo,yu1o,yv1o,ftsolo,pctsrfo) 235 236 print*,'Entete du fichier physique' 237 print*,zrec,zklon,zklev 238 endif 239 240 209 241 c================================================================== 210 242 c Definition des anciennes latitudes et longitudes … … 212 244 c================================================================== 213 245 214 rlonuo(0)=-zpi 246 215 247 do io=1,imo 216 c rlonuo(io)=2.*zpi/FLOAT(imo)*(io+0.5-0.5*FLOAT(imo)-1.) 217 c print*,'LON ',io,rlonuo(io),rlonul(io) 218 rlonuo(io)=rlonul(io) 219 enddo 220 rlonuo(imo+1)=zpi 248 rlonuo(io)=rlonul(io,1)*zpi/180. 249 print*,'LON ',io,rlonuo(io)*180./zpi 250 enddo 251 c abderr 252 rlonuo(imo+1)=0.5*(rlonul(imo,1)+rlonul(imo+1,1))*zpi/180. 253 print*,'LON ',imo+1,rlonuo(imo+1)*180./zpi 254 rlonuo(0)=rlonuo(imo+1)-2.*zpi 255 print*,'LON ',0,rlonuo(0)*180./zpi 256 257 c abder 258 c ATTENTION A REVOIR 259 c goto 22 260 do io=1,imo 261 rlonvo(io)=rlonvl(io,1)*zpi/180. 262 print*,'LON ',io,rlonvo(io)*180./zpi 263 enddo 264 rlonvo(imo+1)=0.5*(rlonvl(imo,1)+rlonvl(imo+1,1))*zpi/180. 265 print*,'LON ',imo+1,rlonvo(imo+1)*180./zpi 266 rlonvo(0)=rlonvo(imo+1)-2.*zpi 267 print*,'LON ',0,rlonvo(0)*180./zpi 268 22 continue 269 c fin ab 221 270 222 271 rlatvo(0)=zpi/2. 272 print*,'LAT ',0,rlatvo(0)*180./zpi 223 273 do jo=1,jmo 224 c rlatvo(jo)=zpi/FLOAT(jmo)*(0.5*FLOAT(jmo)+1.-jo-0.5) 225 c print*,'LAT ',jo,rlatvo(jo),rlatvl(jo) 226 rlatvo(jo)=rlatvl(jo) 227 enddo 228 rlatvo(jmo+1)=-zpi/2. 229 230 c do jo=1,jmo+1 231 c do io=1,imo+1 232 c aireo(io,jo)=rad*rad 233 c s *(rlonuo(io)-rlonuo(io-1)) 234 c s *(sin(rlatvo(jo-1))-sin(rlatvo(jo))) 235 c aireo(io,jo)=airel(io,jo) 236 c enddo 237 c aireo(1,jo)=aireo(1,jo)+aireo(imo+1,jo) 238 c aireo(imo+1,jo)=aireo(1,jo) 239 c enddo 274 rlatvo(jo)=rlatvl(1,jo)*zpi/180. 275 print*,'LAT ',jo,rlatvo(jo)*180./zpi 276 enddo 277 rlatvo(jmo+1)=-zpi/2. 278 print*,'LAT ',jmo+1,rlatvo(jmo+1)*180./zpi 279 c abd 280 c ATTENTION A REVOIR 281 c goto 33 282 c rlatuo(0)=zpi/2. 283 c print*,'LAT ',0,rlatuo(0)*180./zpi 284 do jo=1,jmo+1 285 rlatuo(jo-1)=rlatul(1,jo)*zpi/180. 286 print*,'LAT ',jo-1,rlatuo(jo-1)*180./zpi 287 enddo 288 rlatuo(jmo+1)=-zpi/2. 289 print*,'LAT ',jmo+1,rlatuo(jmo+1)*180./zpi 290 33 continue 291 c abd 240 292 241 293 do io=2,imo … … 250 302 c================================================================== 251 303 252 rlonun(0)=-zpi 304 c Nouvelles longitudes rlonun 305 rlonun(0)=rlonuo(0) 253 306 do io=1,imo+1 254 307 do iin=1,iouest(io)-iest(io) … … 259 312 alphax(in)=alphaxo(io)/ndecx(io) 260 313 print787,io,rlonuo(io-1)*180./zpi,in 261 s ,iest(io),iouest(io),rlonun(in)*180./zpi,alphax(in) 262 enddo 263 enddo 264 314 s ,iest(io),iouest(io),rlonun(in)*180./zpi,alphax(in) 315 enddo 316 enddo 317 318 c Nouvelles longitudes rlonvn 319 c goto 44 320 rlonvn(0)=rlonvo(0) 321 do io=1,imo+1 322 do iin=1,iouest(io)-iest(io) 323 in=iin+iest(io) 324 rlonvn(in)= 325 s rlonvo(io-1)+iin*(rlonvo(io)-rlonvo(io-1)) 326 s /ndecx(io) 327 alphax(in)=alphaxo(io)/ndecx(io) 328 print787,io,rlonvo(io-1)*180./zpi,in 329 s ,iest(io),iouest(io),rlonvn(in)*180./zpi,alphax(in) 330 enddo 331 enddo 332 44 continue 333 334 c Nouvelles latitudes rlatvn 265 335 rlatvn(0)=0.5*zpi 266 336 do jo=1,jmo+1 267 print*,'jo=',jo268 337 do jjn=1,jsud(jo)-jnord(jo) 269 338 jn=jnord(jo)+jjn 270 rlatvn(jn)=rlatvo(jo-1)+jjn*(rlatvo(jo)-rlatvo(jo-1)) 339 rlatvn(jn)= 340 s rlatvo(jo-1)+jjn*(rlatvo(jo)-rlatvo(jo-1)) 271 341 s /ndecy(jo) 272 342 alphay(jn)=(sin(rlatvn(jn-1))-sin(rlatvn(jn))) 273 343 s /(sin(rlatvo(jo-1))-sin(rlatvo(jo))) 274 print787,jo,rlatvo(jo-1)*180./zpi,jn 275 s ,jnord(jo),jsud(jo),rlatvn(jn)*180./zpi,alphay(jn) 276 enddo 277 enddo 278 279 787 format(i5,f10.2,3(i5),2(f10.2)) 344 print*,jn,rlatvn(jn)*180./zpi 345 enddo 346 enddo 347 348 c Nouvelles latitudes rlatun 349 c goto 55 350 rlatun(0)=0.5*zpi 351 do jo=1,jmo+1 352 do jjn=1,jsud(jo)-jnord(jo) 353 jn=jnord(jo)+jjn 354 rlatun(jn)= 355 s rlatuo(jo-1)+jjn*(rlatuo(jo)-rlatuo(jo-1)) 356 s /ndecy(jo) 357 print*,jn,rlatvn(jn)*180./zpi 358 enddo 359 enddo 360 55 continue 361 362 787 format(i5,f10.2,3(i5),2(f12.6)) 280 363 do in=1,imn 281 364 rlonu(in)=rlonun(in) … … 295 378 do in=1,imn 296 379 alpha(in,jn)=alphax(in)*alphay(jn) 380 alphat(in,jn,1)=alpha(in,jn) 297 381 enddo 298 382 alpha(imn+1,jn)=0. 299 enddo 300 383 alphat(imn+1,jn,1)=0. 384 enddo 385 c abderr 19 4 00 386 do l=2,llm 387 do jn=1,jmn+1 388 do in=1,imn+1 389 alphat(in,jn,l)=alphat(in,jn,1) 390 enddo 391 enddo 392 enddo 301 393 c call dump2d(iip1,jjp1,alpha,'ALPHA ') 302 394 … … 358 450 c call dump2d(iip1,jjp1,aire,'AIRE ') 359 451 360 c do jn=1,jjp1361 c do in=1,iim362 c aire(in,jn)=rad*rad*(sin(rlatvn(jn-1))-sin(rlatvn(jn)))363 c s *(rlonun(in)-rlonun(in-1))364 c unsaire(in,jn)=1./aire(in,jn)365 c enddo366 c aire(iip1,jn)=aire(1,jn)367 c unsaire(iip1,jn)=unsaire(1,jn)368 c enddo369 c call dump2d(iip1,jjp1,aire,'AIRE2 ')370 452 DO 42 j = 1,jjp1 371 453 DO 41 i = 1,iim … … 404 486 enddo 405 487 enddo 406 407 488 Print*,'Fin irec=0' 489 go to 435 490 file='pbur' 491 call inigrads(11,iip1 492 s ,rlonu,180./pi,-180.,180.,jjp1,rlatu,-90.,90.,180./pi 493 s ,llm,presnivs,1. 494 s ,1800.,file,'gcmq2 ') 495 file='pbvr' 496 call inigrads(12,iip1 497 s ,rlonv,180./pi,-180.,180.,jjm,rlatv,-90.,90.,180./pi 498 s ,llm,presnivs,1. 499 s ,1800.,file,'gcmq2 ') 500 435 continue 408 501 c================================================================== 409 502 c Fin des initialisations … … 415 508 c Lecture des fichiers fluxmass et physique: 416 509 c ----------------------------------------------------- 417 510 print*,'Entrer dans read_fstoke a irec=',irec 418 511 CALL read_fstoke(irec, 419 512 . zrec,zim,zjm,zlm, 420 . rlonu _dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,513 . rlonul,rlonvl,rlatul,rlatvl,aireo,phiso, 421 514 . massemo,pbaruo,pbarvo,wo,tetao,phio) 422 515 423 do l=1,llm 424 do j=1,jmo 425 do i=1,imo+1 426 pbarvo(i,j,l)=pbarvst(i,j,l) 427 enddo 428 enddo 429 enddo 516 print*,'Apres read_fstoke a irec=',irec 517 518 c do l=1,llm 519 c do j=1,jmo 520 c do i=1,imo+1 521 c pbarvo(i,j,l)=pbarvst(i,j,l) 522 c enddo 523 c enddo 524 c enddo 430 525 431 526 do l=1,llm … … 434 529 do jn=jnord(jo)+1,jsud(jo) 435 530 do in=iest(io)+1,iouest(io) 436 wn(in,jn,l)=alpha(in,jn)*wo(io,jo,l) 437 massemn(in,jn,l)=alpha(in,jn) 438 s *massemo(io,jo,l) 531 c wn(in,jn,l)=alpha(in,jn)*wo(io,jo,l) 532 c massemn(in,jn,l)=alpha(in,jn) 533 wn(in,jn,l)=alphat(in,jn,l)*wo(io,jo,l) 534 massemn(in,jn,l)=alphat(in,jn,l) 535 s *massemo(io,jo,l) 439 536 tetan(in,jn,l)=tetao(io,jo,l) 440 537 phin(in,jn,l)=phio(io,jo,l) 441 c marine442 phisn(i,jn) = phiso(io,jo)443 538 enddo 444 539 enddo … … 450 545 tetan(imn+1,jn,l)=tetan(1,jn,l) 451 546 phin(imn+1,jn,l)=phin(1,jn,l) 452 c marine 453 phisn(imn+1,jn)=phisn(1,jn) 454 455 enddo 456 enddo 457 547 enddo 548 enddo 549 c Test massemn 550 print*,'MASSE DANS LA NOUVELLE GRILLE' 551 goto 908 552 do jo=1,jmo+1 553 do io=1,imo+1 554 do jn=jnord(jo)+1,jsud(jo) 555 do in=iest(io)+1,iouest(io) 556 print*,'massemn(',in,jn,1,')=',massemn(in,jn,1) 557 enddo 558 enddo 559 enddo 560 enddo 561 do jn=1,jmn+1 562 print*,'massemn(',imn+1,jn,1,')=',massemn(imn+1,jn,1) 563 enddo 564 908 continue 565 print*,'Fin calcul de massemn pour nouv. gril.' 458 566 do l=1,llm 459 567 do jo=1,jmo+1 … … 478 586 enddo 479 587 enddo 588 print*,'Fin calcul de pbarun' 480 589 481 590 do l=1,llm … … 507 616 enddo 508 617 509 510 CALL read_pstoke(irec, 511 . zrec,zklon,zklev,airefi,phisfi, 512 . mfu,mfd,en_u,de_u,en_d,de_d,coefkz, 513 . frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf) 514 618 c abd 619 go to 456 620 nom='pbaru' 621 call wrgrads(11,llm,pbarun(:,:,1),nom,nom) 622 nom='pbarv' 623 call wrgrads(12,llm,pbarvn(:,:,1),nom,nom) 624 nom='masse' 625 call wrgrads(11,llm,massemn(:,:,1),nom,nom) 626 nom='w' 627 call wrgrads(11,llm,wn(:,:,1),nom,nom) 628 456 continue 629 c fin ab 630 631 if(physic)then 632 CALL read_pstoke(irec, 633 . zrec,zklon,zklev,airefio,phisfio, 634 . to,mfuo,mfdo,en_uo,de_uo,en_do,de_do,coefkzo, 635 . frac_impao,frac_nuclo,yu1o,yv1o,ftsolo,pctsrfo) 636 print*,'OK read_pstoke pour irec=',irec 515 637 c================================================================== 516 638 c Passage a la nouvelle grille 517 639 c================================================================== 518 do l=1,9*llm+2+2*nbsrf 519 c passage aa la grille dynamique ancienne 520 do io=1,imo+1 521 tmpo(io,1)=xleco(1,l) 522 tmpo(io,jmo+1)=xleco(ngrido,l) 523 enddo 524 do jo=2,jmo 525 do io=1,imo 526 tmpo(io,jo)=xleco((jo-2)*imo+io+1,l) 527 enddo 528 tmpo(imo+1,jo)=tmpo(1,jo) 529 enddo 530 c passage a la grillle dynamique nouvelle 531 do jo=1,jmo+1 532 do io=1,imo+1 533 do jn=jnord(jo)+1,jsud(jo) 534 do in=iest(io)+1,iouest(io) 535 tmpn(in,jn)=tmpo(io,jo) 536 enddo 537 enddo 538 enddo 539 enddo 540 c passage a la grille physique nouvelle 541 xlecn(1,l)=tmpn(1,1) 542 xlecn(ngridn,l)=tmpn(1,jmn+1) 543 do jn=2,jmn 544 do in=1,imn 545 xlecn((jn-2)*imn+in+1,l)=tmpn(in,jn) 546 enddo 547 enddo 548 enddo 549 640 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,to,tmpo1) 641 do l=1,llm 642 do jo=1,jmo+1 643 do io=1,imo 644 tmpo2(io,jo,l)=tmpo1(io,jo,l) 645 enddo 646 enddo 647 648 tmpo2(imo+1,1,l)=to(1,l) 649 tmpo2(imo+1,jmo+1,l)=to(ngrido,l) 650 do jo=2,jmo 651 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 652 enddo 653 c passage a la grillle dynamique nouvelle 654 do jo=1,jmo+1 655 do io=1,imo+1 656 do jn=jnord(jo)+1,jsud(jo) 657 do in=iest(io)+1,iouest(io) 658 tmpn2(in,jn,l)=tmpo2(io,jo,l) 659 enddo 660 enddo 661 enddo 662 enddo 663 do jn=1,jmn+1 664 do in=1,imn 665 tmpn1(in,jn,l)=tmpn2(in,jn,l) 666 enddo 667 enddo 668 enddo 669 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,tn) 670 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 671 call initial0(llm*imo*(jmo+1),tmpo1) 672 call initial0(llm*imn*(jmn+1),tmpn1) 673 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 674 675 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,mfuo,tmpo1) 676 do l=1,llm 677 do jo=1,jmo+1 678 do io=1,imo 679 tmpo2(io,jo,l)=tmpo1(io,jo,l) 680 enddo 681 enddo 682 683 tmpo2(imo+1,1,l)=mfuo(1,l) 684 tmpo2(imo+1,jmo+1,l)=mfuo(ngrido,l) 685 do jo=2,jmo 686 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 687 enddo 688 c passage a la grillle dynamique nouvelle 689 do jo=1,jmo+1 690 do io=1,imo+1 691 do jn=jnord(jo)+1,jsud(jo) 692 do in=iest(io)+1,iouest(io) 693 tmpn2(in,jn,l)=tmpo2(io,jo,l) 694 enddo 695 enddo 696 enddo 697 enddo 698 do jn=1,jmn+1 699 do in=1,imn 700 tmpn1(in,jn,l)=tmpn2(in,jn,l) 701 enddo 702 enddo 703 enddo 704 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,mfun) 705 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 706 call initial0(llm*imo*(jmo+1),tmpo1) 707 call initial0(llm*imn*(jmn+1),tmpn1) 708 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 709 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,mfdo,tmpo1) 710 do l=1,llm 711 do jo=1,jmo+1 712 do io=1,imo 713 tmpo2(io,jo,l)=tmpo1(io,jo,l) 714 enddo 715 enddo 716 717 tmpo2(imo+1,1,l)=mfdo(1,l) 718 tmpo2(imo+1,jmo+1,l)=mfdo(ngrido,l) 719 do jo=2,jmo 720 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 721 enddo 722 c passage a la grillle dynamique nouvelle 723 do jo=1,jmo+1 724 do io=1,imo+1 725 do jn=jnord(jo)+1,jsud(jo) 726 do in=iest(io)+1,iouest(io) 727 tmpn2(in,jn,l)=tmpo2(io,jo,l) 728 enddo 729 enddo 730 enddo 731 enddo 732 do jn=1,jmn+1 733 do in=1,imn 734 tmpn1(in,jn,l)=tmpn2(in,jn,l) 735 enddo 736 enddo 737 enddo 738 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,mfdn) 739 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 740 call initial0(llm*imo*(jmo+1),tmpo1) 741 call initial0(llm*imn*(jmn+1),tmpn1) 742 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 743 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,en_uo,tmpo1) 744 do l=1,llm 745 do jo=1,jmo+1 746 do io=1,imo 747 tmpo2(io,jo,l)=tmpo1(io,jo,l) 748 enddo 749 enddo 750 751 tmpo2(imo+1,1,l)=en_uo(1,l) 752 tmpo2(imo+1,jmo+1,l)=en_uo(ngrido,l) 753 do jo=2,jmo 754 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 755 enddo 756 c passage a la grillle dynamique nouvelle 757 do jo=1,jmo+1 758 do io=1,imo+1 759 do jn=jnord(jo)+1,jsud(jo) 760 do in=iest(io)+1,iouest(io) 761 tmpn2(in,jn,l)=tmpo2(io,jo,l) 762 enddo 763 enddo 764 enddo 765 enddo 766 do jn=1,jmn+1 767 do in=1,imn 768 tmpn1(in,jn,l)=tmpn2(in,jn,l) 769 enddo 770 enddo 771 enddo 772 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,en_un) 773 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 774 call initial0(llm*imo*(jmo+1),tmpo1) 775 call initial0(llm*imn*(jmn+1),tmpn1) 776 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 777 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,en_do,tmpo1) 778 do l=1,llm 779 do jo=1,jmo+1 780 do io=1,imo 781 tmpo2(io,jo,l)=tmpo1(io,jo,l) 782 enddo 783 enddo 784 785 tmpo2(imo+1,1,l)=en_do(1,l) 786 tmpo2(imo+1,jmo+1,l)=en_do(ngrido,l) 787 do jo=2,jmo 788 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 789 enddo 790 c passage a la grillle dynamique nouvelle 791 do jo=1,jmo+1 792 do io=1,imo+1 793 do jn=jnord(jo)+1,jsud(jo) 794 do in=iest(io)+1,iouest(io) 795 tmpn2(in,jn,l)=tmpo2(io,jo,l) 796 enddo 797 enddo 798 enddo 799 enddo 800 do jn=1,jmn+1 801 do in=1,imn 802 tmpn1(in,jn,l)=tmpn2(in,jn,l) 803 enddo 804 enddo 805 enddo 806 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,en_dn) 807 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 808 call initial0(llm*imo*(jmo+1),tmpo1) 809 call initial0(llm*imn*(jmn+1),tmpn1) 810 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 811 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,de_do,tmpo1) 812 do l=1,llm 813 do jo=1,jmo+1 814 do io=1,imo 815 tmpo2(io,jo,l)=tmpo1(io,jo,l) 816 enddo 817 enddo 818 819 tmpo2(imo+1,1,l)=de_do(1,l) 820 tmpo2(imo+1,jmo+1,l)=de_do(ngrido,l) 821 do jo=2,jmo 822 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 823 enddo 824 c passage a la grillle dynamique nouvelle 825 do jo=1,jmo+1 826 do io=1,imo+1 827 do jn=jnord(jo)+1,jsud(jo) 828 do in=iest(io)+1,iouest(io) 829 tmpn2(in,jn,l)=tmpo2(io,jo,l) 830 enddo 831 enddo 832 enddo 833 enddo 834 do jn=1,jmn+1 835 do in=1,imn 836 tmpn1(in,jn,l)=tmpn2(in,jn,l) 837 enddo 838 enddo 839 enddo 840 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,de_dn) 841 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 842 call initial0(llm*imo*(jmo+1),tmpo1) 843 call initial0(llm*imn*(jmn+1),tmpn1) 844 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 845 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,de_uo,tmpo1) 846 do l=1,llm 847 do jo=1,jmo+1 848 do io=1,imo 849 tmpo2(io,jo,l)=tmpo1(io,jo,l) 850 enddo 851 enddo 852 853 tmpo2(imo+1,1,l)=de_uo(1,l) 854 tmpo2(imo+1,jmo+1,l)=de_uo(ngrido,l) 855 do jo=2,jmo 856 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 857 enddo 858 c passage a la grillle dynamique nouvelle 859 do jo=1,jmo+1 860 do io=1,imo+1 861 do jn=jnord(jo)+1,jsud(jo) 862 do in=iest(io)+1,iouest(io) 863 tmpn2(in,jn,l)=tmpo2(io,jo,l) 864 enddo 865 enddo 866 enddo 867 enddo 868 do jn=1,jmn+1 869 do in=1,imn 870 tmpn1(in,jn,l)=tmpn2(in,jn,l) 871 enddo 872 enddo 873 enddo 874 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,de_un) 875 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 876 call initial0(llm*imo*(jmo+1),tmpo1) 877 call initial0(llm*imn*(jmn+1),tmpn1) 878 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 879 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,coefkzo,tmpo1) 880 do l=1,llm 881 do jo=1,jmo+1 882 do io=1,imo 883 tmpo2(io,jo,l)=tmpo1(io,jo,l) 884 enddo 885 enddo 886 887 tmpo2(imo+1,1,l)=coefkzo(1,l) 888 tmpo2(imo+1,jmo+1,l)=coefkzo(ngrido,l) 889 890 do jo=2,jmo 891 tmpo2(imo+1,jo,l)=tmpo2(1,jo,l) 892 enddo 893 enddo 894 895 c passage a la grillle dynamique nouvelle 896 do l=1,llm 897 do jo=1,jmo+1 898 do io=1,imo+1 899 do jn=jnord(jo)+1,jsud(jo) 900 do in=iest(io)+1,iouest(io) 901 tmpn2(in,jn,l)=tmpo2(io,jo,l) 902 enddo 903 enddo 904 enddo 905 enddo 906 do jn=1,jmn+1 907 do in=1,imn 908 tmpn1(in,jn,l)=tmpn2(in,jn,l) 909 enddo 910 enddo 911 enddo 912 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,coefkzn) 913 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 914 call initial0(llm*imo*(jmo+1),tmpo1) 915 call initial0(llm*imn*(jmn+1),tmpn1) 916 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 917 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,frac_impao,tmpo1) 918 do l=1,llm 919 do jo=1,jmo+1 920 do io=1,imo 921 tmpo2(io,jo,l)=tmpo1(io,jo,l) 922 enddo 923 enddo 924 925 tmpo2(imo+1,1,l)=frac_impao(1,l) 926 tmpo2(imo+1,jmo+1,l)=frac_impao(ngrido,l) 927 do jo=2,jmo 928 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 929 enddo 930 c passage a la grillle dynamique nouvelle 931 do jo=1,jmo+1 932 do io=1,imo+1 933 do jn=jnord(jo)+1,jsud(jo) 934 do in=iest(io)+1,iouest(io) 935 tmpn2(in,jn,l)=tmpo2(io,jo,l) 936 enddo 937 enddo 938 enddo 939 enddo 940 do jn=1,jmn+1 941 do in=1,imn 942 tmpn1(in,jn,l)=tmpn2(in,jn,l) 943 enddo 944 enddo 945 enddo 946 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,frac_impan) 947 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 948 call initial0(llm*imo*(jmo+1),tmpo1) 949 call initial0(llm*imn*(jmn+1),tmpn1) 950 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 951 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,frac_nuclo,tmpo1) 952 do l=1,llm 953 do jo=1,jmo+1 954 do io=1,imo 955 tmpo2(io,jo,l)=tmpo1(io,jo,l) 956 enddo 957 enddo 958 959 tmpo2(imo+1,1,l)=frac_nuclo(1,l) 960 tmpo2(imo+1,jmo+1,l)=frac_nuclo(ngrido,l) 961 do jo=2,jmo 962 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 963 enddo 964 c passage a la grillle dynamique nouvelle 965 do jo=1,jmo+1 966 do io=1,imo+1 967 do jn=jnord(jo)+1,jsud(jo) 968 do in=iest(io)+1,iouest(io) 969 tmpn2(in,jn,l)=tmpo2(io,jo,l) 970 enddo 971 enddo 972 enddo 973 enddo 974 do jn=1,jmn+1 975 do in=1,imn 976 tmpn1(in,jn,l)=tmpn2(in,jn,l) 977 enddo 978 enddo 979 enddo 980 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,frac_nucln) 981 982 call gr_fi_ecrit(nbsrf,ngrido,imo,jmo+1,ftsolo,tmpo3) 983 do l=1,nbsrf 984 do jo=1,jmo+1 985 do io=1,imo 986 tmpo4(io,jo,l)=tmpo3(io,jo,l) 987 enddo 988 enddo 989 990 tmpo4(imo+1,1,l)=ftsolo(1,l) 991 tmpo4(imo+1,jmo+1,l)=ftsolo(ngrido,l) 992 do jo=2,jmo 993 tmpo4(imo+1,jo,l)=tmpo3(1,jo,l) 994 enddo 995 c passage a la grillle dynamique nouvelle 996 do jo=1,jmo+1 997 do io=1,imo+1 998 do jn=jnord(jo)+1,jsud(jo) 999 do in=iest(io)+1,iouest(io) 1000 tmpn4(in,jn,l)=tmpo3(io,jo,l) 1001 enddo 1002 enddo 1003 enddo 1004 enddo 1005 do jn=1,jmn+1 1006 do in=1,imn 1007 tmpn3(in,jn,l)=tmpn4(in,jn,l) 1008 enddo 1009 enddo 1010 enddo 1011 call gr_ecrit_fi(nbsrf,ngridn,imn,jmn+1,tmpn3,ftsoln) 1012 1013 call initial0(nbsrf*(imo+1)*(jmo+1),tmpo4) 1014 call initial0(nbsrf*imo*(jmo+1),tmpo3) 1015 call initial0(nbsrf*imn*(jmn+1),tmpn3) 1016 call initial0(nbsrf*(imn+1)*(jmn+1),tmpn4) 1017 call gr_fi_ecrit(nbsrf,ngrido,imo,jmo+1,pctsrfo,tmpo3) 1018 do l=1,nbsrf 1019 do jo=1,jmo+1 1020 do io=1,imo 1021 tmpo4(io,jo,l)=tmpo3(io,jo,l) 1022 enddo 1023 enddo 1024 1025 tmpo4(imo+1,1,l)=pctsrfo(1,l) 1026 tmpo4(imo+1,jmo+1,l)=pctsrfo(ngrido,l) 1027 do jo=2,jmo 1028 tmpo4(imo+1,jo,l)=tmpo3(1,jo,l) 1029 enddo 1030 c passage a la grillle dynamique nouvelle 1031 do jo=1,jmo+1 1032 do io=1,imo+1 1033 do jn=jnord(jo)+1,jsud(jo) 1034 do in=iest(io)+1,iouest(io) 1035 tmpn4(in,jn,l)=tmpo3(io,jo,l) 1036 enddo 1037 enddo 1038 enddo 1039 enddo 1040 do jn=1,jmn+1 1041 do in=1,imn 1042 tmpn3(in,jn,l)=tmpn4(in,jn,l) 1043 enddo 1044 enddo 1045 enddo 1046 call gr_ecrit_fi(nbsrf,ngridn,imn,jmn+1,tmpn3,pctsrfn) 1047 1048 call gr_fi_ecrit(1,ngrido,imo,jmo+1,yv1o,tmpo5) 1049 1050 do jo=1,jmo+1 1051 do io=1,imo 1052 tmpo6(io,jo)=tmpo5(io,jo) 1053 enddo 1054 enddo 1055 1056 tmpo6(imo+1,1)=yv1o(1) 1057 tmpo6(imo+1,jmo+1)=yv1o(ngrido) 1058 do jo=2,jmo 1059 tmpo6(imo+1,jo)=tmpo5(1,jo) 1060 enddo 1061 c passage a la grillle dynamique nouvelle 1062 do jo=1,jmo+1 1063 do io=1,imo+1 1064 do jn=jnord(jo)+1,jsud(jo) 1065 do in=iest(io)+1,iouest(io) 1066 tmpn6(in,jn)=tmpo5(io,jo) 1067 enddo 1068 enddo 1069 enddo 1070 enddo 1071 do jn=1,jmn+1 1072 do in=1,imn 1073 tmpn5(in,jn)=tmpn6(in,jn) 1074 enddo 1075 enddo 1076 call gr_ecrit_fi(1,ngridn,imn,jmn+1,tmpn5,yv1n) 1077 1078 call initial0((imo+1)*(jmo+1),tmpo6) 1079 call initial0(imo*(jmo+1),tmpo5) 1080 call initial0(imn*(jmn+1),tmpn5) 1081 call initial0((imn+1)*(jmn+1),tmpn6) 1082 call gr_fi_ecrit(1,ngrido,imo,jmo+1,yu1o,tmpo5) 1083 1084 do jo=1,jmo+1 1085 do io=1,imo 1086 tmpo6(io,jo)=tmpo5(io,jo) 1087 enddo 1088 enddo 1089 1090 tmpo6(imo+1,1)=yu1o(1) 1091 tmpo6(imo+1,jmo+1)=yu1o(ngrido) 1092 do jo=2,jmo 1093 tmpo6(imo+1,jo)=tmpo5(1,jo) 1094 enddo 1095 c passage a la grillle dynamique nouvelle 1096 do jo=1,jmo+1 1097 do io=1,imo+1 1098 do jn=jnord(jo)+1,jsud(jo) 1099 do in=iest(io)+1,iouest(io) 1100 tmpn6(in,jn)=tmpo5(io,jo) 1101 enddo 1102 enddo 1103 enddo 1104 enddo 1105 do jn=1,jmn+1 1106 do in=1,imn 1107 tmpn5(in,jn)=tmpn6(in,jn) 1108 enddo 1109 enddo 1110 call gr_ecrit_fi(1,ngridn,imn,jmn+1,tmpn5,yu1n) 550 1111 c================================================================== 551 1112 if (avant) then 552 1113 c Simu directe 553 do l=1,llm1114 do l=1,llm 554 1115 do ig=1,ngridn 555 zmfu(ig,l)=mfu(ig,l)556 zmf d(ig,l)=mfd(ig,l)557 z de_u(ig,l)=de_u(ig,l)558 z en_u(ig,l)=en_u(ig,l)559 z de_d(ig,l)=de_d(ig,l)560 z en_d(ig,l)=en_d(ig,l)1116 zmfd(ig,l)=mfdn(ig,l) 1117 zmfu(ig,l)=mfun(ig,l) 1118 zen_d(ig,l)=en_dn(ig,l) 1119 zde_d(ig,l)=de_dn(ig,l) 1120 zen_u(ig,l)=en_un(ig,l) 1121 zde_u(ig,l)=de_un(ig,l) 561 1122 enddo 562 1123 enddo … … 565 1126 do l=1,llm 566 1127 do ig=1,ngridn 567 zmfd(ig,l)=-mf u(ig,l)568 zmfu(ig,l)=-mf d(ig,l)569 zen_d(ig,l)= de_u(ig,l)570 zde_d(ig,l)= en_u(ig,l)571 zen_u(ig,l)= de_d(ig,l)572 zde_u(ig,l)= en_d(ig,l)1128 zmfd(ig,l)=-mfdn(ig,l) 1129 zmfu(ig,l)=-mfun(ig,l) 1130 zen_d(ig,l)=en_dn(ig,l) 1131 zde_d(ig,l)=de_dn(ig,l) 1132 zen_u(ig,l)=en_un(ig,l) 1133 zde_u(ig,l)=de_un(ig,l) 573 1134 enddo 574 1135 enddo … … 585 1146 zcontrole(ig)=1. 586 1147 enddo 587 c zmass=(max(massemn(ig,l),massemn(ig,l-1))/airefi (ig)1148 c zmass=(max(massemn(ig,l),massemn(ig,l-1))/airefin(ig) 588 1149 do l=2,llm 589 1150 do ig=1,ngridn 590 zmass=max(massefi(ig,l),massefi(ig,l-1))/airefi (ig)1151 zmass=max(massefi(ig,l),massefi(ig,l-1))/airefin(ig) 591 1152 zflux=max(abs(zmfu(ig,l)),abs(zmfd(ig,l)))*dtphys 592 1153 if(zflux.gt.0.9*zmass) then … … 615 1176 enddo 616 1177 enddo 617 1178 endif ! physic 618 1179 619 1180 endif ! irec=0
Note: See TracChangeset
for help on using the changeset viewer.