Changeset 4171 for LMDZ6/branches/LMDZ-ECRAD/libf/dyn3dmem/vlspltqs_loc.F
- Timestamp:
- Jun 17, 2022, 4:24:49 PM (2 years ago)
- Location:
- LMDZ6/branches/LMDZ-ECRAD
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ-ECRAD
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ-ECRAD/libf/dyn3dmem/vlspltqs_loc.F
r3800 r4171 12 12 c -------------------------------------------------------------------- 13 13 USE parallel_lmdz 14 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils, ! CRisi &15 & qperemin,masseqmin,ratiomin! MVals et CRisi14 USE infotrac, ONLY : nqtot,tracers, ! CRisi & 15 & min_qParent,min_qMass,min_ratio ! MVals et CRisi 16 16 IMPLICIT NONE 17 17 c … … 264 264 c$OMP END DO NOWAIT 265 265 266 cym ATTENTION ICI en OpenMP reduction pas forcement n écessaire266 cym ATTENTION ICI en OpenMP reduction pas forcement necessaire 267 267 cym IF(n0.gt.1) THEN 268 268 cym IF(n0.gt.0) THEN … … 335 335 c$OMP END DO NOWAIT 336 336 337 ! CRisi: appel récursif de l'advection sur les fils. 338 ! Il faut faire ça avant d'avoir mis à jour q et masse 339 !write(*,*) 'vlspltqs 336: iq,ijb_x,nqfils(iq)=', 340 ! & iq,ijb_x,nqfils(iq) 341 342 if (nqfils(iq).gt.0) then 343 do ifils=1,nqdesc(iq) 344 iq2=iqfils(ifils,iq) 337 ! CRisi: appel recursif de l'advection sur les fils. 338 ! Il faut faire ca avant d'avoir mis a jour q et masse 339 !write(*,*) 'vlspltqs 336: iq,ijb_x,nqChilds(iq)=', 340 ! & iq,ijb_x,tracers(iq)%nqChilds 341 342 do ifils=1,tracers(iq)%nqDescen 343 iq2=tracers(iq)%iqDescen(ifils) 345 344 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 346 345 DO l=1,llm 347 346 DO ij=ijb,ije 348 !MVals: veiller a ce qu'on n'ait pas de denominateur nul349 masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)350 if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020351 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)352 else353 Ratio(ij,l,iq2)=ratiomin354 endif347 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 348 masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),min_qMass) 349 if (q(ij,l,iq).gt.min_qParent) then ! modif 13 nov 2020 350 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 351 else 352 Ratio(ij,l,iq2)=min_ratio 353 endif 355 354 enddo 356 enddo 357 c$OMP END DO NOWAIT 358 enddo !do ifils=1,nqfils(iq) 359 do ifils=1,nqfils(iq) 360 iq2=iqfils(ifils,iq) 361 !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2 362 call vlx_loc(Ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2) 363 enddo !do ifils=1,nqfils(iq) 364 endif !if (nqfils(iq).gt.0) then 355 enddo 356 c$OMP END DO NOWAIT 357 enddo 358 do ifils=1,tracers(iq)%nqChilds 359 iq2=tracers(iq)%iqDescen(ifils) 360 !write(*,*) 'vlxqs 349: on appelle vlx pour iq2=',iq2 361 call vlx_loc(Ratio,pente_max,masse,u_mq,ijb_x,ije_x,iq2) 362 enddo 365 363 ! end CRisi 366 364 … … 372 370 DO ij=ijb+1,ije 373 371 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 374 new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),m asseqmin)372 new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),min_qMass) 375 373 q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+ 376 374 & u_mq(ij-1,l)-u_mq(ij,l)) … … 389 387 390 388 ! retablir les fils en rapport de melange par rapport a l'air: 391 if (nqfils(iq).gt.0) then 392 do ifils=1,nqdesc(iq) 393 iq2=iqfils(ifils,iq) 389 do ifils=1,tracers(iq)%nqDescen 390 iq2=tracers(iq)%iqDescen(ifils) 394 391 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 395 392 DO l=1,llm 396 393 DO ij=ijb+1,ije 397 394 q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2) 398 395 enddo 399 396 DO ij=ijb+iip1-1,ije,iip1 400 397 q(ij-iim,l,iq2)=q(ij,l,iq2) 401 398 enddo ! DO ij=ijb+iip1-1,ije,iip1 402 enddo 403 c$OMP END DO NOWAIT 404 enddo !do ifils=1,nqdesc(iq) 405 endif !if (nqfils(iq).gt.0) then 399 enddo 400 c$OMP END DO NOWAIT 401 enddo 406 402 407 403 !write(*,*) 'vlspltqs 399: iq,ijb_x=',iq,ijb_x … … 426 422 c -------------------------------------------------------------------- 427 423 USE parallel_lmdz 428 USE infotrac, ONLY : nqtot, nqfils,nqdesc,iqfils, ! CRisi &429 & qperemin,masseqmin,ratiomin! MVals et CRisi424 USE infotrac, ONLY : nqtot,tracers, ! CRisi & 425 & min_qParent,min_qMass,min_ratio ! MVals et CRisi 430 426 USE comconst_mod, ONLY: pi 431 427 IMPLICIT NONE … … 731 727 c$OMP END DO NOWAIT 732 728 733 ! CRisi: appel r écursif de l'advection sur les fils.734 ! Il faut faire ça avant d'avoir mis àjour q et masse735 !write(*,*) 'vlyqs 689: iq,nq fils(iq)=',iq,nqfils(iq)729 ! CRisi: appel recursif de l'advection sur les fils. 730 ! Il faut faire ca avant d'avoir mis a jour q et masse 731 !write(*,*) 'vlyqs 689: iq,nqChilds(iq)=',iq,tracers(iq)%nqChilds 736 732 737 733 ijb=ij_begin-2*iip1 … … 747 743 !write(lunout,*) 'ij_begin,ij_end=',ij_begin,ij_end 748 744 !write(lunout,*) 'pole_nord,pole_sud=',pole_nord,pole_sud 749 if (nqfils(iq).gt.0) then 750 do ifils=1,nqdesc(iq) 751 iq2=iqfils(ifils,iq) 745 do ifils=1,tracers(iq)%nqDescen 746 iq2=tracers(iq)%iqDescen(ifils) 752 747 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 753 748 DO l=1,llm 754 749 ! modif des bornes: CRisi 16 nov 2020 755 ! d'abord masse avec bornes corrig ées750 ! d'abord masse avec bornes corrigees 756 751 DO ij=ijbm,ijem 757 !MVals: veiller a ce qu'on n'ait pas de denominateur nul758 masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)752 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 753 masse(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),min_qMass) 759 754 enddo !DO ij=ijbm,ijem 760 755 761 756 ! ensuite Ratio avec anciennes bornes 762 757 DO ij=ijb,ije 763 !MVals: veiller a ce qu'on n'ait pas de denominateur nul764 !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq)765 if (q(ij,l,iq).gt.qperemin) then ! modif 13 nov 2020766 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)767 else768 Ratio(ij,l,iq2)=ratiomin769 endif758 !MVals: veiller a ce qu'on n'ait pas de denominateur nul 759 !write(lunout,*) 'ij,l,q(ij,l,iq)=',ij,l,q(ij,l,iq) 760 if (q(ij,l,iq).gt.min_qParent) then ! modif 13 nov 2020 761 Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq) 762 else 763 Ratio(ij,l,iq2)=min_ratio 764 endif 770 765 enddo !DO ij=ijbm,ijem 771 enddo !DO l=1,llm 772 c$OMP END DO NOWAIT 773 enddo !do ifils=1,nqdesc(iq) 774 do ifils=1,nqfils(iq) 775 iq2=iqfils(ifils,iq) 776 !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2 777 call vly_loc(Ratio,pente_max,masse,qbyv,iq2) 778 enddo !do ifils=1,nqfils(iq) 779 endif !if (nqfils(iq).gt.0) then 766 enddo !DO l=1,llm 767 c$OMP END DO NOWAIT 768 enddo 769 do ifils=1,tracers(iq)%nqChilds 770 iq2=tracers(iq)%iqDescen(ifils) 771 !write(lunout,*) 'vly: appel recursiv vly iq2=',iq2 772 call vly_loc(Ratio,pente_max,masse,qbyv,iq2) 773 enddo 780 774 781 775 … … 856 850 ! if (pole_sud) ije=ij_end-iip1 857 851 858 if (nqfils(iq).gt.0) then 859 do ifils=1,nqdesc(iq) 860 iq2=iqfils(ifils,iq) 852 do ifils=1,tracers(iq)%nqDescen 853 iq2=tracers(iq)%iqDescen(ifils) 861 854 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 862 855 DO l=1,llm 863 856 DO ij=ijb,ije 864 857 q(ij,l,iq2)=q(ij,l,iq)*Ratio(ij,l,iq2) 865 858 enddo 866 enddo 867 c$OMP END DO NOWAIT 868 enddo !do ifils=1,nqdesc(iq) 869 endif !if (nqfils(iq).gt.0) then 859 enddo 860 c$OMP END DO NOWAIT 861 enddo 870 862 871 863
Note: See TracChangeset
for help on using the changeset viewer.