Changeset 109 for trunk/libf/dyn3d
- Timestamp:
- Apr 14, 2011, 11:47:04 AM (14 years ago)
- Location:
- trunk/libf/dyn3d
- Files:
-
- 1 added
- 6 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/libf/dyn3d/comvert.h
r1 r109 6 6 7 7 COMMON/comvert/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm), & 8 & pa,preff,nivsigs(llm),nivsig(llm+1) 8 & pa,preff,nivsigs(llm),nivsig(llm+1), & 9 & aps(llm),bps(llm) 9 10 10 REAL ap,bp,presnivs,dpres,pa,preff,nivsigs,nivsig 11 REAL ap,bp,presnivs,dpres,pa,preff,nivsigs,nivsig,aps,bps 11 12 12 13 !----------------------------------------------------------------------- -
trunk/libf/dyn3d/disvert_terre.F90
r107 r109 1 1 ! $Id: disvert.F90 1480 2011-01-31 21:29:58Z jghattas $ 2 2 3 SUBROUTINE disvert (pa, preff, ap, bp, dpres, presnivs, nivsigs, nivsig)3 SUBROUTINE disvert_terre(pa, preff, ap, bp, dpres, presnivs, nivsigs, nivsig) 4 4 5 5 ! Auteur : P. Le Van -
trunk/libf/dyn3d/exner_milieu.F
r107 r109 1 SUBROUTINE exner_ hyb( ngrid, ps, p,beta, pks, pk, pkf )1 SUBROUTINE exner_milieu ( ngrid, ps, p,beta, pks, pk, pkf ) 2 2 c 3 3 c Auteurs : F. Forget , Y. Wanherdrick … … 17 17 c 18 18 c WARNING : CECI est une version speciale de exner_hyb originale 19 c Utilis dans la version martienne pour pouvoir20 c tourner avec des coordonn es verticales complexe21 c => Il ne verifie PAS la condition la proportionalit en22 c nergie totale/ interne / potentielle (F.Forget 2001)19 c Utilise dans la version martienne pour pouvoir 20 c tourner avec des coordonnees verticales complexe 21 c => Il ne verifie PAS la condition la proportionalite en 22 c energie totale/ interne / potentielle (F.Forget 2001) 23 23 c ( voir note de Fr.Hourdin ) , 24 24 c -
trunk/libf/dyn3d/iniconst.F
r1 r109 53 53 c----------------------------------------------------------------------- 54 54 55 CALL disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig) 56 c 55 if (planet_type.eq."earth") then 56 CALL disvert_terre(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig) 57 else 58 CALL disvert_noterre 59 endif 57 60 c 58 61 RETURN -
trunk/libf/dyn3d/leapfrog.F
r108 r109 238 238 dq(:,:,:)=0. 239 239 CALL pression ( ip1jmp1, ap, bp, ps, p ) 240 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 240 if (planet_type.eq."earth") then 241 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 242 else 243 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 244 endif 245 241 246 c------------------ 242 247 c TEST PK MONOTONE … … 404 409 405 410 CALL pression ( ip1jmp1, ap, bp, ps, p ) 406 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta,pks, pk, pkf ) 411 if (planet_type.eq."earth") then 412 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 413 else 414 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 415 endif 407 416 408 417 ! rdaym_ini = itau * dtvr / daysec … … 519 528 520 529 CALL pression ( ip1jmp1, ap, bp, ps, p ) 521 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 530 if (planet_type.eq."earth") then 531 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) 532 else 533 CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf ) 534 endif 522 535 523 536 -
trunk/libf/dyn3d/limy.F
r1 r109 40 40 REAL qbyv(ip1jm,llm) 41 41 42 REAL qpns,qpsn,ap n,aps,dyn1,dys1,dyn2,dys242 REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2 43 43 Logical extremum,first 44 44 save first … … 117 117 118 118 c print*,dyqv(iip1+1) 119 c ap n=abs(dyq(1)/dyqv(iip1+1))119 c appn=abs(dyq(1)/dyqv(iip1+1)) 120 120 c print*,dyq(ip1jm+1) 121 121 c print*,dyqv(ip1jm-iip1+1) 122 c ap s=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))122 c apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1)) 123 123 c do ij=2,iim 124 c ap n=amax1(abs(dyq(ij)/dyqv(ij)),apn)125 c ap s=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)124 c appn=amax1(abs(dyq(ij)/dyqv(ij)),appn) 125 c apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps) 126 126 c enddo 127 c ap n=min(pente_max/apn,1.)128 c ap s=min(pente_max/aps,1.)127 c appn=min(pente_max/appn,1.) 128 c apps=min(pente_max/apps,1.) 129 129 130 130 … … 132 132 133 133 c if(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.) 134 c & ap n=0.134 c & appn=0. 135 135 c if(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)* 136 136 c & dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.) 137 c & ap s=0.137 c & apps=0. 138 138 139 139 c limitation des pentes aux poles 140 140 c do ij=1,iip1 141 c dyq(ij)=ap n*dyq(ij)142 c dyq(ip1jm+ij)=ap s*dyq(ip1jm+ij)141 c dyq(ij)=appn*dyq(ij) 142 c dyq(ip1jm+ij)=apps*dyq(ip1jm+ij) 143 143 c enddo 144 144 -
trunk/libf/dyn3d/vlsplt.F
r1 r109 478 478 REAL qbyv(ip1jm,llm) 479 479 480 REAL qpns,qpsn,ap n,aps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs480 REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs 481 481 c REAL newq,oldmasse 482 482 Logical extremum,first,testcpu … … 602 602 C PRINT*,dyq(1) 603 603 C PRINT*,dyqv(iip1+1) 604 C ap n=abs(dyq(1)/dyqv(iip1+1))604 C appn=abs(dyq(1)/dyqv(iip1+1)) 605 605 C PRINT*,dyq(ip1jm+1) 606 606 C PRINT*,dyqv(ip1jm-iip1+1) 607 C ap s=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))607 C apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1)) 608 608 C DO ij=2,iim 609 C ap n=amax1(abs(dyq(ij)/dyqv(ij)),apn)610 C ap s=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)609 C appn=amax1(abs(dyq(ij)/dyqv(ij)),appn) 610 C apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps) 611 611 C ENDDO 612 C ap n=min(pente_max/apn,1.)613 C ap s=min(pente_max/aps,1.)612 C appn=min(pente_max/appn,1.) 613 C apps=min(pente_max/apps,1.) 614 614 C 615 615 C … … 617 617 C 618 618 C IF(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.) 619 C & ap n=0.619 C & appn=0. 620 620 C IF(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)* 621 621 C & dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.) 622 C & ap s=0.622 C & apps=0. 623 623 C 624 624 C limitation des pentes aux poles 625 625 C DO ij=1,iip1 626 C dyq(ij)=ap n*dyq(ij)627 C dyq(ip1jm+ij)=ap s*dyq(ip1jm+ij)626 C dyq(ij)=appn*dyq(ij) 627 C dyq(ip1jm+ij)=apps*dyq(ip1jm+ij) 628 628 C ENDDO 629 629 C -
trunk/libf/dyn3d/vlspltqs.F
r5 r109 635 635 C PRINT*,dyq(1) 636 636 C PRINT*,dyqv(iip1+1) 637 C ap n=abs(dyq(1)/dyqv(iip1+1))637 C appn=abs(dyq(1)/dyqv(iip1+1)) 638 638 C PRINT*,dyq(ip1jm+1) 639 639 C PRINT*,dyqv(ip1jm-iip1+1) 640 C ap s=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))640 C apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1)) 641 641 C DO ij=2,iim 642 C ap n=amax1(abs(dyq(ij)/dyqv(ij)),apn)643 C ap s=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)642 C appn=amax1(abs(dyq(ij)/dyqv(ij)),appn) 643 C apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps) 644 644 C ENDDO 645 C ap n=min(pente_max/apn,1.)646 C ap s=min(pente_max/aps,1.)645 C appn=min(pente_max/appn,1.) 646 C apps=min(pente_max/apps,1.) 647 647 C 648 648 C … … 650 650 C 651 651 C IF(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.) 652 C & ap n=0.652 C & appn=0. 653 653 C IF(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)* 654 654 C & dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.) 655 C & ap s=0.655 C & apps=0. 656 656 C 657 657 C limitation des pentes aux poles 658 658 C DO ij=1,iip1 659 C dyq(ij)=ap n*dyq(ij)660 C dyq(ip1jm+ij)=ap s*dyq(ip1jm+ij)659 C dyq(ij)=appn*dyq(ij) 660 C dyq(ip1jm+ij)=apps*dyq(ip1jm+ij) 661 661 C ENDDO 662 662 C
Note: See TracChangeset
for help on using the changeset viewer.