Changeset 3852 for LMDZ6/branches/LMDZ-tracers/libf/dyn3d/vlspltqs.F
- Timestamp:
- Feb 22, 2021, 5:28:31 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ-tracers/libf/dyn3d/vlspltqs.F
r2603 r3852 4 4 SUBROUTINE vlspltqs ( q,pente_max,masse,w,pbaru,pbarv,pdt, 5 5 , p,pk,teta,iq ) 6 USE infotrac, ONLY: nqtot, nqdesc,iqfils6 USE infotrac, ONLY: nqtot, tracers, tra 7 7 c 8 8 c Auteurs: P.Le Van, F.Hourdin, F.Forget, F.Codron … … 45 45 c 46 46 INTEGER i,ij,l,j,ii 47 INTEGER ifils,iq2 ! CRisi 47 INTEGER ichld,iq2 ! CRisi 48 TYPE(tra), POINTER :: tr 48 49 c 49 50 REAL qsat(ip1jmp1,llm) … … 84 85 rtt = 273.16 85 86 87 tr => tracers(iq) 88 86 89 c-- Calcul de Qsat en chaque point 87 90 c-- approximation: au milieu des couches play(l)=(p(l)+p(l+1))/2 … … 121 124 CALL SCOPY(ijp1llm,q(1,1,iq),1,zq(1,1,iq),1) 122 125 CALL SCOPY(ijp1llm,masse,1,zm(1,1,iq),1) 123 if ( nqdesc(iq).gt.0) then124 do i fils=1,nqdesc(iq)125 iq2= iqfils(ifils,iq)126 if (tr%ndesc > 0) then 127 do ichld=1,tr%ndesc 128 iq2=tr%idesc(ichld) 126 129 CALL SCOPY(ijp1llm,q(1,1,iq2),1,zq(1,1,iq2),1) 127 130 enddo 128 endif !if ( nqfils(iq).gt.0) then131 endif !if (tr%ndesc > 0) 129 132 130 133 c call minmaxq(zq,qmin,qmax,'avant vlxqs ') … … 162 165 ENDDO 163 166 ! CRisi: aussi pour les fils 164 if ( nqdesc(iq).gt.0) then165 do i fils=1,nqdesc(iq)166 iq2= iqfils(ifils,iq)167 if (tr%ndesc > 0) then 168 do ichld=1,tr%ndesc 169 iq2=tr%idesc(ichld) 167 170 DO l=1,llm 168 171 DO ij=1,ip1jmp1 … … 173 176 ENDDO 174 177 ENDDO 175 enddo !do i fils=1,nqdesc(iq)176 endif ! if ( nqfils(iq).gt.0) then178 enddo !do ichld=1,tr%ndesc 179 endif ! if (tr%ndesc > 0) 177 180 !write(*,*) 'vlspltqs 183: fin de la routine' 178 181 … … 180 183 END 181 184 SUBROUTINE vlxqs(q,pente_max,masse,u_m,qsat,iq) 182 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils! CRisi185 USE infotrac, ONLY : nqtot, tracers, tra ! CRisi 183 186 184 187 c … … 218 221 ! CRisi 219 222 REAL masseq(ip1jmp1,llm,nqtot),Ratio(ip1jmp1,llm,nqtot) 220 INTEGER ifils,iq2 ! CRisi 223 INTEGER ichld,iq2 ! CRisi 224 TYPE(tra), POINTER :: tr 221 225 222 226 Logical first,testcpu … … 238 242 first=.false. 239 243 ENDIF 244 245 tr => tracers(iq) 240 246 241 247 c calcul de la pente a droite et a gauche de la maille … … 485 491 !write(*,*) 'vlspltqs 326: iq,nqfils(iq)=',iq,nqfils(iq) 486 492 487 if ( nqfils(iq).gt.0) then488 do i fils=1,nqdesc(iq)489 iq2= iqfils(ifils,iq)493 if (tr%ndesc > 0) then 494 do ichld=1,tr%ndesc 495 iq2=tr%idesc(ichld) 490 496 DO l=1,llm 491 497 DO ij=iip2,ip1jm … … 495 501 enddo 496 502 enddo 497 enddo !do i fils=1,nqdesc(iq)498 do i fils=1,nqfils(iq)499 iq2= iqfils(ifils,iq)503 enddo !do ichld=1,nqdesc(iq) 504 do ichld=1,tr%nchld 505 iq2=tr%idesc(ichld) 500 506 call vlx(Ratio,pente_max,masseq,u_mq,iq2) 501 enddo !do i fils=1,nqfils(iq)502 endif !if ( nqfils(iq).gt.0) then507 enddo !do ichld=1,tr%nchld 508 endif !if (tr%ndesc > 0) 503 509 ! end CRisi 504 510 … … 523 529 ! On calcule q entre iip2+1,ip1jm -> on fait pareil pour ratio 524 530 ! puis on boucle en longitude 525 if ( nqdesc(iq).gt.0) then526 do i fils=1,nqdesc(iq)527 iq2= iqfils(ifils,iq)531 if (tr%ndesc > 0) then 532 do ichld=1,tr%ndesc 533 iq2=tr%idesc(ichld) 528 534 DO l=1,llm 529 535 DO ij=iip2+1,ip1jm … … 534 540 enddo ! DO ij=ijb+iip1-1,ije,iip1 535 541 enddo !DO l=1,llm 536 enddo !do i fils=1,nqdesc(iq)537 endif !if ( nqfils(iq).gt.0) then542 enddo !do ichld=1,tr%ndesc 543 endif !if (tr%ndesc > 0) 538 544 539 545 c CALL SCOPY((jjm-1)*llm,q(iip1+iip1,1),iip1,q(iip2,1),iip1) … … 544 550 END 545 551 SUBROUTINE vlyqs(q,pente_max,masse,masse_adv_v,qsat,iq) 546 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils! CRisi552 USE infotrac, ONLY : nqtot, tracers, tra ! CRisi 547 553 c 548 554 c Auteurs: P.Le Van, F.Hourdin, F.Forget … … 598 604 599 605 REAL masseq(ip1jmp1,llm,nqtot),Ratio(ip1jmp1,llm,nqtot) ! CRisi 600 INTEGER ifils,iq2 ! CRisi 606 INTEGER ichld,iq2 ! CRisi 607 TYPE(tra), POINTER :: tr 601 608 c 602 609 c … … 623 630 ENDIF 624 631 632 tr => tracers(iq) 625 633 c 626 634 … … 796 804 !write(*,*) 'vlyqs 689: iq,nqfils(iq)=',iq,nqfils(iq) 797 805 798 if ( nqfils(iq).gt.0) then799 do i fils=1,nqdesc(iq)800 iq2= iqfils(ifils,iq)806 if (tr%ndesc > 0) then 807 do ichld=1,tr%ndesc 808 iq2=tr%idesc(ichld) 801 809 DO l=1,llm 802 810 DO ij=1,ip1jmp1 … … 805 813 enddo 806 814 enddo 807 enddo !do i fils=1,nqdesc(iq)808 809 do i fils=1,nqfils(iq)810 iq2= iqfils(ifils,iq)815 enddo !do ichld=1,tr%ndesc 816 817 do ichld=1,tr%nchld 818 iq2=tr%idesc(ichld) 811 819 !write(*,*) 'vlyqs 783: appel rec de vly, iq2=',iq2 812 820 call vly(Ratio,pente_max,masseq,qbyv,iq2) 813 enddo !do i fils=1,nqfils(iq)814 endif !if ( nqfils(iq).gt.0) then821 enddo !do ichld=1,tr%nchld 822 endif !if (tr%ndesc > 0) 815 823 816 824 DO l=1,llm … … 868 876 869 877 ! retablir les fils en rapport de melange par rapport a l'air: 870 if ( nqdesc(iq).gt.0) then871 do i fils=1,nqdesc(iq)872 iq2= iqfils(ifils,iq)878 if (tr%ndesc > 0) then 879 do ichld=1,tr%ndesc 880 iq2=tr%idesc(ichld) 873 881 DO l=1,llm 874 882 DO ij=1,ip1jmp1 … … 876 884 enddo 877 885 enddo 878 enddo !do i fils=1,nqdesc(iq)879 endif !if ( nqfils(iq).gt.0) then886 enddo !do ichld=1,tr%ndesc 887 endif !if (tr%ndesc > 0) 880 888 !write(*,*) 'vly 879' 881 889
Note: See TracChangeset
for help on using the changeset viewer.