Changeset 4050 for LMDZ6/trunk/libf/dyn3d/vlspltqs.F
- Timestamp:
- Dec 23, 2021, 6:54:17 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d/vlspltqs.F
r2603 r4050 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 7 7 c 8 8 c Auteurs: P.Le Van, F.Hourdin, F.Forget, F.Codron … … 121 121 CALL SCOPY(ijp1llm,q(1,1,iq),1,zq(1,1,iq),1) 122 122 CALL SCOPY(ijp1llm,masse,1,zm(1,1,iq),1) 123 if (nqdesc(iq).gt.0) then 124 do ifils=1,nqdesc(iq) 125 iq2=iqfils(ifils,iq) 123 do ifils=1,tracers(iq)%nqDescen 124 iq2=tracers(iq)%iqDescen(ifils) 126 125 CALL SCOPY(ijp1llm,q(1,1,iq2),1,zq(1,1,iq2),1) 127 enddo 128 endif !if (nqfils(iq).gt.0) then 126 enddo 129 127 130 128 c call minmaxq(zq,qmin,qmax,'avant vlxqs ') … … 162 160 ENDDO 163 161 ! CRisi: aussi pour les fils 164 if (nqdesc(iq).gt.0) then 165 do ifils=1,nqdesc(iq) 166 iq2=iqfils(ifils,iq) 162 do ifils=1,tracers(iq)%nqDescen 163 iq2=tracers(iq)%iqDescen(ifils) 167 164 DO l=1,llm 168 DO ij=1,ip1jmp1169 q(ij,l,iq2)=zq(ij,l,iq2)170 ENDDO171 DO ij=1,ip1jm+1,iip1165 DO ij=1,ip1jmp1 166 q(ij,l,iq2)=zq(ij,l,iq2) 167 ENDDO 168 DO ij=1,ip1jm+1,iip1 172 169 q(ij+iim,l,iq2)=q(ij,l,iq2) 173 ENDDO170 ENDDO 174 171 ENDDO 175 enddo !do ifils=1,nqdesc(iq) 176 endif ! if (nqfils(iq).gt.0) then 172 enddo 177 173 !write(*,*) 'vlspltqs 183: fin de la routine' 178 174 … … 180 176 END 181 177 SUBROUTINE vlxqs(q,pente_max,masse,u_m,qsat,iq) 182 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils ! CRisi178 USE infotrac, ONLY : nqtot,tracers ! CRisi 183 179 184 180 c … … 483 479 ! CRisi: appel récursif de l'advection sur les fils. 484 480 ! Il faut faire ça avant d'avoir mis à jour q et masse 485 !write(*,*) 'vlspltqs 326: iq,nq fils(iq)=',iq,nqfils(iq)481 !write(*,*) 'vlspltqs 326: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds 486 482 487 if (nqfils(iq).gt.0) then 488 do ifils=1,nqdesc(iq) 489 iq2=iqfils(ifils,iq) 490 DO l=1,llm 483 do ifils=1,tracers(iq)%nqDescen 484 iq2=tracers(iq)%iqDescen(ifils) 485 DO l=1,llm 491 486 DO ij=iip2,ip1jm 492 493 masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)494 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)487 ! On a besoin de q et masse seulement entre iip2 et ip1jm 488 masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq) 489 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 495 490 enddo 496 enddo 497 enddo !do ifils=1,nqdesc(iq) 498 do ifils=1,nqfils(iq) 499 iq2=iqfils(ifils,iq) 500 call vlx(Ratio,pente_max,masseq,u_mq,iq2) 501 enddo !do ifils=1,nqfils(iq) 502 endif !if (nqfils(iq).gt.0) then 491 enddo 492 enddo 493 do ifils=1,tracers(iq)%nqChilds 494 iq2=tracers(iq)%iqDescen(ifils) 495 call vlx(Ratio,pente_max,masseq,u_mq,iq2) 496 enddo 503 497 ! end CRisi 504 498 … … 523 517 ! On calcule q entre iip2+1,ip1jm -> on fait pareil pour ratio 524 518 ! puis on boucle en longitude 525 if (nqdesc(iq).gt.0) then 526 do ifils=1,nqdesc(iq) 527 iq2=iqfils(ifils,iq) 528 DO l=1,llm 519 do ifils=1,tracers(iq)%nqDescen 520 iq2=tracers(iq)%iqDescen(ifils) 521 DO l=1,llm 529 522 DO ij=iip2+1,ip1jm 530 523 q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2) 531 524 enddo 532 525 DO ij=iip1+iip1,ip1jm,iip1 533 q(ij-iim,l,iq2)=q(ij,l,iq2) 534 enddo ! DO ij=ijb+iip1-1,ije,iip1 535 enddo !DO l=1,llm 536 enddo !do ifils=1,nqdesc(iq) 537 endif !if (nqfils(iq).gt.0) then 526 q(ij-iim,l,iq2)=q(ij,l,iq2) 527 enddo 528 enddo 529 enddo 538 530 539 531 c CALL SCOPY((jjm-1)*llm,q(iip1+iip1,1),iip1,q(iip2,1),iip1) … … 544 536 END 545 537 SUBROUTINE vlyqs(q,pente_max,masse,masse_adv_v,qsat,iq) 546 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils ! CRisi538 USE infotrac, ONLY : nqtot,tracers ! CRisi 547 539 c 548 540 c Auteurs: P.Le Van, F.Hourdin, F.Forget … … 794 786 ! CRisi: appel récursif de l'advection sur les fils. 795 787 ! Il faut faire ça avant d'avoir mis à jour q et masse 796 !write(*,*) 'vlyqs 689: iq,nq fils(iq)=',iq,nqfils(iq)788 !write(*,*) 'vlyqs 689: iq,nqDesc(iq)=',iq,tracers(iq)%nqDescen 797 789 798 if (nqfils(iq).gt.0) then 799 do ifils=1,nqdesc(iq) 800 iq2=iqfils(ifils,iq) 801 DO l=1,llm 802 DO ij=1,ip1jmp1 803 masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq) 804 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 790 do ifils=1,tracers(iq)%nqDescen 791 iq2=tracers(iq)%iqDescen(ifils) 792 DO l=1,llm 793 DO ij=1,ip1jmp1 794 masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq) 795 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 805 796 enddo 806 enddo 807 enddo !do ifils=1,nqdesc(iq) 808 809 do ifils=1,nqfils(iq) 810 iq2=iqfils(ifils,iq) 811 !write(*,*) 'vlyqs 783: appel rec de vly, iq2=',iq2 812 call vly(Ratio,pente_max,masseq,qbyv,iq2) 813 enddo !do ifils=1,nqfils(iq) 814 endif !if (nqfils(iq).gt.0) then 797 enddo 798 enddo 799 do ifils=1,tracers(iq)%nqChilds 800 iq2=tracers(iq)%iqDescen(ifils) 801 !write(*,*) 'vlyqs 783: appel rec de vly, iq2=',iq2 802 call vly(Ratio,pente_max,masseq,qbyv,iq2) 803 enddo 815 804 816 805 DO l=1,llm … … 868 857 869 858 ! retablir les fils en rapport de melange par rapport a l'air: 870 if (nqdesc(iq).gt.0) then 871 do ifils=1,nqdesc(iq) 872 iq2=iqfils(ifils,iq) 873 DO l=1,llm 859 do ifils=1,tracers(iq)%nqDescen 860 iq2=tracers(iq)%iqDescen(ifils) 861 DO l=1,llm 874 862 DO ij=1,ip1jmp1 875 863 q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2) 876 864 enddo 877 enddo 878 enddo !do ifils=1,nqdesc(iq) 879 endif !if (nqfils(iq).gt.0) then 865 enddo 866 enddo 880 867 !write(*,*) 'vly 879' 881 868
Note: See TracChangeset
for help on using the changeset viewer.