Changeset 5081 for LMDZ6/branches/Amaury_dev/libf/dyn3dmem
- Timestamp:
- Jul 19, 2024, 4:15:44 PM (18 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dyn3dmem
- Files:
-
- 3 edited
-
guide_loc_mod.F90 (modified) (9 diffs)
-
massbarxy_loc.F90 (modified) (1 diff)
-
vlspltqs_loc.F (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/guide_loc_mod.F90
r5072 r5081 1598 1598 if (first) then 1599 1599 ncidpl=-99 1600 write(*,*) ,trim(modname)//': opening nudging files '1600 write(*,*) trim(modname)//': opening nudging files ' 1601 1601 ! Ap et Bp si Niveaux de pression hybrides 1602 1602 if (guide_plevs==1) then 1603 write(*,*) ,trim(modname)//' Reading nudging on model levels'1603 write(*,*) trim(modname)//' Reading nudging on model levels' 1604 1604 rcode = nf90_open('apbp.nc', nf90_nowrite, ncidpl) 1605 1605 IF (rcode/=NF_NOERR) THEN … … 1617 1617 CALL abort_gcm(modname,abort_message,1) 1618 1618 ENDIF 1619 write(*,*) ,trim(modname)//' ncidpl,varidap',ncidpl,varidap1619 write(*,*) trim(modname)//' ncidpl,varidap',ncidpl,varidap 1620 1620 endif 1621 1621 … … 1632 1632 CALL abort_gcm(modname,abort_message,1) 1633 1633 ENDIF 1634 write(*,*) ,trim(modname)//' ncidp,varidp',ncidp,varidp1634 write(*,*) trim(modname)//' ncidp,varidp',ncidp,varidp 1635 1635 if (ncidpl==-99) ncidpl=ncidp 1636 1636 endif … … 1648 1648 CALL abort_gcm(modname,abort_message,1) 1649 1649 ENDIF 1650 write(*,*) ,trim(modname)//' ncidu,varidu',ncidu,varidu1650 write(*,*) trim(modname)//' ncidu,varidu',ncidu,varidu 1651 1651 if (ncidpl==-99) ncidpl=ncidu 1652 1652 … … 1680 1680 CALL abort_gcm(modname,abort_message,1) 1681 1681 ENDIF 1682 write(*,*) ,trim(modname)//' ncidv,varidv',ncidv,varidv1682 write(*,*) trim(modname)//' ncidv,varidv',ncidv,varidv 1683 1683 if (ncidpl==-99) ncidpl=ncidv 1684 1684 … … 1713 1713 CALL abort_gcm(modname,abort_message,1) 1714 1714 ENDIF 1715 write(*,*) ,trim(modname)//' ncidT,varidT',ncidt,varidt1715 write(*,*) trim(modname)//' ncidT,varidT',ncidt,varidt 1716 1716 if (ncidpl==-99) ncidpl=ncidt 1717 1717 … … 1744 1744 CALL abort_gcm(modname,abort_message,1) 1745 1745 ENDIF 1746 write(*,*) ,trim(modname)//' ncidQ,varidQ',ncidQ,varidQ1746 write(*,*) trim(modname)//' ncidQ,varidQ',ncidQ,varidQ 1747 1747 if (ncidpl==-99) ncidpl=ncidQ 1748 1748 … … 1776 1776 CALL abort_gcm(modname,abort_message,1) 1777 1777 ENDIF 1778 write(*,*) ,trim(modname)//' ncidps,varidps',ncidps,varidps1778 write(*,*) trim(modname)//' ncidps,varidps',ncidps,varidps 1779 1779 endif 1780 1780 ! Coordonnee verticale … … 1782 1782 rcode = nf90_inq_varid(ncidpl, 'LEVEL', varidpl) 1783 1783 IF (rcode/=0) rcode = nf90_inq_varid(ncidpl, 'PRESSURE', varidpl) 1784 write(*,*) ,trim(modname)//' ncidpl,varidpl',ncidpl,varidpl1784 write(*,*) trim(modname)//' ncidpl,varidpl',ncidpl,varidpl 1785 1785 endif 1786 1786 ! Coefs ap, bp pour calcul de la pression aux differents niveaux -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/massbarxy_loc.F90
r2597 r5081 27 27 DO ij=ijb,ije-1 28 28 massebxy(ij,l)=masse(ij ,l)*alpha2(ij ) + & 29 +masse(ij+1 ,l)*alpha3(ij+1 ) + &30 +masse(ij+iip1,l)*alpha1(ij+iip1) + &31 +masse(ij+iip2,l)*alpha4(ij+iip2)29 masse(ij+1 ,l)*alpha3(ij+1 ) + & 30 masse(ij+iip1,l)*alpha1(ij+iip1) + & 31 masse(ij+iip2,l)*alpha4(ij+iip2) 32 32 END DO 33 33 DO ij=ijb+iip1-1,ije+iip1-1,iip1; massebxy(ij,l)=massebxy(ij-iim,l); END DO -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/vlspltqs_loc.F
r4469 r5081 62 62 if (pole_sud.and.ije==ip1jmp1) ije=ije-iip1 63 63 64 IF (pente_max .gt.-1.e-5) THEN64 IF (pente_max>-1.e-5) THEN 65 65 c IF (pente_max.gt.10) THEN 66 66 … … 104 104 , cvmgp(dxqu(ij-1)+dxqu(ij),0.,dxqu(ij-1)*dxqu(ij)) 105 105 #else 106 IF(dxqu(ij-1)*dxqu(ij) .gt.0) THEN106 IF(dxqu(ij-1)*dxqu(ij)>0) THEN 107 107 dxq(ij,l)=dxqu(ij-1)+dxqu(ij) 108 108 ELSE … … 135 135 zz(ij)=dxqu(ij-1)*dxqu(ij) 136 136 zz(ij)=zz(ij)+zz(ij) 137 IF(zz(ij) .gt.0) THEN137 IF(zz(ij)>0) THEN 138 138 dxq(ij,l)=zz(ij)/(dxqu(ij-1)+dxqu(ij)) 139 139 ELSE … … 205 205 DO l=1,llm 206 206 DO ij=ijb,ije-1 207 IF (u_m(ij,l) .gt.0.) THEN207 IF (u_m(ij,l)>0.) THEN 208 208 zdum(ij,l)=1.-u_m(ij,l)/masse(ij,l,iq) 209 209 u_mq(ij,l)=u_m(ij,l)* … … 225 225 DO l=1,llm 226 226 DO ij=ijb,ije-1 227 IF(zdum(ij,l) .lt.0) THEN227 IF(zdum(ij,l)<0) THEN 228 228 iadvplus(ij,l)=1 229 229 u_mq(ij,l)=0. … … 269 269 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 270 270 DO l=1,llm 271 IF(nl(l) .gt.0) THEN271 IF(nl(l)>0) THEN 272 272 iju=0 273 273 c indicage des mailles concernees par le traitement special 274 274 DO ij=ijb,ije 275 IF(iadvplus(ij,l) .eq.1.and.mod(ij,iip1).ne.0) THEN275 IF(iadvplus(ij,l)==1.and.mod(ij,iip1)/=0) THEN 276 276 iju=iju+1 277 277 indu(iju)=ij … … 287 287 zu_m=u_m(ij,l) 288 288 u_mq(ij,l)=0. 289 IF(zu_m .gt.0.) THEN289 IF(zu_m>0.) THEN 290 290 ijq=ij 291 291 i=ijq-(j-1)*iip1 292 292 c accumulation pour les mailles completements advectees 293 do while(zu_m .gt.masse(ijq,l,iq))293 do while(zu_m>masse(ijq,l,iq)) 294 294 u_mq(ij,l)=u_mq(ij,l)+q(ijq,l,iq) 295 295 & *masse(ijq,l,iq) … … 305 305 i=ijq-(j-1)*iip1 306 306 c accumulation pour les mailles completements advectees 307 do while(-zu_m .gt.masse(ijq,l,iq))307 do while(-zu_m>masse(ijq,l,iq)) 308 308 u_mq(ij,l)=u_mq(ij,l)-q(ijq,l,iq) 309 309 & *masse(ijq,l,iq) … … 345 345 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 346 346 masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),min_qMass) 347 if (q(ij,l,iq) .gt.min_qParent) then ! modif 13 nov 2020347 if (q(ij,l,iq)>min_qParent) then ! modif 13 nov 2020 348 348 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 349 349 else … … 478 478 ij=3525 479 479 l=3 480 if ((ij .ge.ijb).and.(ij.le.ije)) then480 if ((ij>=ijb).and.(ij<=ije)) then 481 481 !write(*,*) 'vlyqs 480: ij,l,iq,ijb,q(ij,l,:)=', 482 482 ! & ij,l,iq,ijb,q(ij,l,:) … … 576 576 fn=1. 577 577 DO ij=1,iim 578 IF(pente_max*adyqv(ij) .lt.abs(dyq(ij,l))) THEN578 IF(pente_max*adyqv(ij)<abs(dyq(ij,l))) THEN 579 579 fn=min(pente_max*adyqv(ij)/abs(dyq(ij,l)),fn) 580 580 ENDIF … … 608 608 fs=1. 609 609 DO ij=1,iim 610 IF(pente_max*adyqv(ij+ip1jm-iip1) .lt.abs(dyq(ij+ip1jm,l))) THEN610 IF(pente_max*adyqv(ij+ip1jm-iip1)<abs(dyq(ij+ip1jm,l))) THEN 611 611 fs=min(pente_max*adyqv(ij+ip1jm-iip1)/abs(dyq(ij+ip1jm,l)),fs) 612 612 ENDIF … … 694 694 695 695 DO ij=ijb,ije 696 IF(dyqv(ij)*dyqv(ij-iip1) .gt.0.) THEN696 IF(dyqv(ij)*dyqv(ij-iip1)>0.) THEN 697 697 dyq(ij,l)=sign(min(abs(dyq(ij,l)),dyqmax(ij)),dyq(ij,l)) 698 698 ELSE … … 712 712 DO l=1,llm 713 713 DO ij=ijb,ije 714 IF( masse_adv_v(ij,l) .GT.0. ) THEN714 IF( masse_adv_v(ij,l)>0. ) THEN 715 715 qbyv(ij,l,iq)= MIN( qsat(ij+iip1,l), q(ij+iip1,l,iq ) + 716 716 , dyq(ij+iip1,l)*0.5*(1.-masse_adv_v(ij,l) … … 757 757 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 758 758 !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq) 759 if (q(ij,l,iq) .gt.min_qParent) then ! modif 13 nov 2020759 if (q(ij,l,iq)>min_qParent) then ! modif 13 nov 2020 760 760 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 761 761 else … … 806 806 IF (pole_sud) THEN 807 807 808 convps = -SSUM(iim,qbyv(ip1jm-iim,l,iq),iq,1)/apols 808 convps = -SSUM(iim,qbyv(ip1jm-iim,l,iq),iq,1)/apols ! /!\ called with 4 args ??? 809 809 convmps = -SSUM(iim,masse_adv_v(ip1jm-iim,l),1)/apols 810 810 DO ij = ip1jm+1,ip1jmp1
Note: See TracChangeset
for help on using the changeset viewer.
