-
JBS
-
-
OFFLINE
-
Senior Boarder
-
- Posts: 78
- Thank you received: 3
-
-
|
Another possible solution is to re-use a trick Jean-Michel Hervouet suggested for version v6p3, which seems to work out for v7p2 also. This also requires a modification of the file 'telemac2d.F', but a heavier one than the one you suggested above. Diffusion (VISC) here is also deactivated for tracer 2, be careful! I give it here below.
The idea is to create a work array (pipo1) filled with zeros and substituting it into the advection field arrays in the calling of CVFTR. But the case SOLSYS=1 or SOLSYS=2 must be distinguished. Be also careful with the YAFLODEL key.
(in 'telemac2d.F', same lines)
!=======================================================================
! ADVECTION-DIFFUSION OF TRACERS
!=======================================================================
!
!-----------------------------------------------------------------------
! Ajout pour la désactivation de la convection des traceurs
! (mise a zero du tableau pipo1)
!
CALL OS('X=0 ',X=pipo1)
!
!-----------------------------------------------------------------------
!
DO ITRAC=1,NTRAC
!
! CALLS THE STANDARD DIFFUSER. (CV1 IS THE SECOND MEMBER)
!
INFOGT=INFOGR.AND.ENTET
! HTILD: WORKING ARRAY WHERE HPROP IS RE-COMPUTED
! (SAME ARRAY STRUCTURE)
!
! LIMTRA REPLACED BY A COPY (IT MAY BE CHANGED BY THE ADVECTION SCHEME)
!
DO I=1,NPTFR
IT1%I(I)=LIMTRA%I(I)
ENDDO
!
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING CVDFTR SOLSYS=',SOLSYS
IF(SOLSYS.EQ.1) THEN
!
!-----------------------------------------------------------------------
! Mise à zero de la convection/diffusion du traceur 2
!
if (ITRAC.eq.2) then
CALL CVDFTR(T%ADR(ITRAC)%P,TTILD%ADR(ITRAC)%P,TN%ADR(ITRAC)%P,
& TSCEXP%ADR(ITRAC)%P,
& DIFT,ICONVFT(ITRAC),CONVV(3),H,HN,HPROP,TETAC,
& pipo1,pipo1,DM1,ZCONV,SOLSYS,
& pipo1,VISC_S,TEXP%ADR(ITRAC)%P,SMH,YASMH,
& TIMP%ADR(ITRAC)%P,YASMI(ITRAC),AM1,AM2,ZF,
& TBOR%ADR(ITRAC)%P,ATBOR%ADR(ITRAC)%P,
& BTBOR%ADR(ITRAC)%P,IT1,MASKTR,MESH,W1,TB,
& T1,T2,T3,T4,T5,T6,T7,T10,TE1,TE2,TE3,
& KDIR,KDDL,KENT,
& DT,ENTET,TETAT,AGGLOT,INFOGT,BILMAS,OPTADV_TR(ITRAC),
& ISOUSI,LT,NIT,OPDTRA,OPTBAN,
& MSK,MASKEL,MASKPT,MBOR,S,MASSOU(ITRAC),
& OPTSOU,SLVTRA(ITRAC),FLBOR,VOLU2D,V2DPAR,UNSV2D,
& 2,FLBORTRA,
& FLULIM,YAFLULIM,DIRFLU,RAIN,PLUIE,TRAIN(ITRAC),
& FLODEL,.FALSE.,MAXADV,TB2,NCO_DIST,NSP_DIST)
else
CALL CVDFTR(T%ADR(ITRAC)%P,TTILD%ADR(ITRAC)%P,TN%ADR(ITRAC)%P,
& TSCEXP%ADR(ITRAC)%P,
& DIFT,ICONVFT(ITRAC),CONVV(3),H,HN,HPROP,TETAC,
& UCONV,VCONV,DM1,ZCONV,SOLSYS,
& VISCT%ADR(ITRAC)%P,VISC_S,TEXP%ADR(ITRAC)%P,SMH,YASMH,
& TIMP%ADR(ITRAC)%P,YASMI(ITRAC),AM1,AM2,ZF,
& TBOR%ADR(ITRAC)%P,ATBOR%ADR(ITRAC)%P,
& BTBOR%ADR(ITRAC)%P,IT1,MASKTR,MESH,W1,TB,
& T1,T2,T3,T4,T5,T6,T7,T10,TE1,TE2,TE3,
& KDIR,KDDL,KENT,
& DT,ENTET,TETAT,AGGLOT,INFOGT,BILMAS,OPTADV_TR(ITRAC),
& ISOUSI,LT,NIT,OPDTRA,OPTBAN,
& MSK,MASKEL,MASKPT,MBOR,S,MASSOU(ITRAC),
& OPTSOU,SLVTRA(ITRAC),FLBOR,VOLU2D,V2DPAR,UNSV2D,
& 2,FLBORTRA,
& FLULIM,YAFLULIM,DIRFLU,RAIN,PLUIE,TRAIN(ITRAC),
& FLODEL,.FALSE.,MAXADV,TB2,NCO_DIST,NSP_DIST)
endif
!
ELSE
!
if (ITRAC.eq.2) then
CALL CVDFTR(T%ADR(ITRAC)%P,TTILD%ADR(ITRAC)%P,TN%ADR(ITRAC)%P,
& TSCEXP%ADR(ITRAC)%P,
& DIFT,ICONVFT(ITRAC),CONVV(3),H,HN,HPROP,TETAC,
& pipo1,pipo1,pipo1,pipo1,1,
& pipo1,VISC_S,TEXP%ADR(ITRAC)%P,SMH,YASMH,
& TIMP%ADR(ITRAC)%P,YASMI(ITRAC),AM1,AM2,ZF,
& TBOR%ADR(ITRAC)%P,ATBOR%ADR(ITRAC)%P,
& BTBOR%ADR(ITRAC)%P,IT1,MASKTR,MESH,W1,TB,
& T1,T2,T3,T4,T5,T6,T7,T10,TE1,TE2,TE3,
& KDIR,KDDL,KENT,
& DT,ENTET,TETAT,AGGLOT,INFOGT,BILMAS,OPTADV_TR(ITRAC),
& ISOUSI,LT,NIT,OPDTRA,OPTBAN,
& MSK,MASKEL,MASKPT,MBOR,S,MASSOU(ITRAC),
& OPTSOU,SLVTRA(ITRAC),FLBOR,VOLU2D,V2DPAR,UNSV2D,
& 2,FLBORTRA,
& FLULIM,YAFLULIM,DIRFLU,RAIN,PLUIE,TRAIN(ITRAC),
& FLODEL,.FALSE.,MAXADV,TB2,NCO_DIST,NSP_DIST)
else
CALL CVDFTR(T%ADR(ITRAC)%P,TTILD%ADR(ITRAC)%P,TN%ADR(ITRAC)%P,
& TSCEXP%ADR(ITRAC)%P,
& DIFT,ICONVFT(ITRAC),CONVV(3),H,HN,HPROP,TETAC,
& UDEL,VDEL,DM1,ZCONV,SOLSYS,
& VISCT%ADR(ITRAC)%P,VISC_S,TEXP%ADR(ITRAC)%P,SMH,YASMH,
& TIMP%ADR(ITRAC)%P,YASMI(ITRAC),AM1,AM2,ZF,
& TBOR%ADR(ITRAC)%P,ATBOR%ADR(ITRAC)%P,
& BTBOR%ADR(ITRAC)%P,IT1,MASKTR,MESH,W1,TB,
& T1,T2,T3,T4,T5,T6,T7,T10,TE1,TE2,TE3,
& KDIR,KDDL,KENT,
& DT,ENTET,TETAT,AGGLOT,INFOGT,BILMAS,OPTADV_TR(ITRAC),
& ISOUSI,LT,NIT,OPDTRA,OPTBAN,
& MSK,MASKEL,MASKPT,MBOR,S,MASSOU(ITRAC),
& OPTSOU,SLVTRA(ITRAC),FLBOR,VOLU2D,V2DPAR,UNSV2D,
& 2,FLBORTRA,
& FLULIM,YAFLULIM,DIRFLU,RAIN,PLUIE,TRAIN(ITRAC),
& FLODEL,YAFLODEL,MAXADV,TB2,NCO_DIST,NSP_DIST)
endif
ENDIF
with work array 'pipo1' which has been defined at the top of the file as:
TYPE(BIEF_OBJ), TARGET :: pipo1
and later:
CALL BIEF_ALLVEC(1,pipo1,'PIPO1 ',IELMU,1,1,MESH)
Best regards,
JBS.
|