Changeset 5246 for LMDZ6/trunk/libf/dyn3d/caladvtrac.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d/caladvtrac.f90
r5245 r5246 2 2 ! $Id$ 3 3 ! 4 c 5 c 6 SUBROUTINE caladvtrac(q,pbaru,pbarv ,7 * p ,masse, dq , teta,8 *flxw, pk)9 c 10 11 12 13 14 15 c 16 c Auteurs: F.Hourdin , P.Le Van, F.Forget, F.Codron 17 c 18 cF.Codron (10/99) : ajout humidite specifique pour eau vapeur19 c=======================================================================20 c 21 cShema de Van Leer22 c 23 c=======================================================================4 ! 5 ! 6 SUBROUTINE caladvtrac(q,pbaru,pbarv , & 7 p ,masse, dq , teta, & 8 flxw, pk) 9 ! 10 USE infotrac, ONLY : nqtot 11 USE control_mod, ONLY : iapp_tracvl,planet_type 12 USE comconst_mod, ONLY: dtvr 13 14 IMPLICIT NONE 15 ! 16 ! Auteurs: F.Hourdin , P.Le Van, F.Forget, F.Codron 17 ! 18 ! F.Codron (10/99) : ajout humidite specifique pour eau vapeur 19 !======================================================================= 20 ! 21 ! Shema de Van Leer 22 ! 23 !======================================================================= 24 24 25 25 26 27 26 include "dimensions.h" 27 include "paramet.h" 28 28 29 cArguments:30 c----------31 REALpbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)32 REALp( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot)33 34 REALteta( ip1jmp1,llm),pk( ip1jmp1,llm)35 29 ! Arguments: 30 ! ---------- 31 REAL :: pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm) 32 REAL :: p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot) 33 real :: dq(ip1jmp1,llm,nqtot) 34 REAL :: teta( ip1jmp1,llm),pk( ip1jmp1,llm) 35 REAL :: flxw(ip1jmp1,llm) 36 36 37 c..................................................................38 c 39 c.. dq n'est utilise et dimensionne que pour l'eau vapeur et liqu.40 c 41 c..................................................................42 c 43 cLocal:44 c------37 ! .................................................................. 38 ! 39 ! .. dq n'est utilise et dimensionne que pour l'eau vapeur et liqu. 40 ! 41 ! .................................................................. 42 ! 43 ! Local: 44 ! ------ 45 45 46 47 INTEGERij,l, iq, iapptrac48 REALfinmasse(ip1jmp1,llm), dtvrtrac46 EXTERNAL advtrac,minmaxq, qminimum 47 INTEGER :: ij,l, iq, iapptrac 48 REAL :: finmasse(ip1jmp1,llm), dtvrtrac 49 49 50 cc 51 c 52 ! Earth-specific stuff for the first 2 tracers (water) 53 if (planet_type.eq."earth") then 54 C initialisation 55 ! CRisi: il faut gérer tous les traceurs si on veut pouvoir faire des 56 ! isotopes 57 ! dq(:,:,1:2)=q(:,:,1:2) 58 dq(:,:,1:nqtot)=q(:,:,1:nqtot) 59 60 c test des valeurs minmax 61 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ') 62 cc CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ') 63 endif ! of if (planet_type.eq."earth") 64 c advection 50 !c 51 ! 52 ! Earth-specific stuff for the first 2 tracers (water) 53 if (planet_type.eq."earth") then 54 ! initialisation 55 ! CRisi: il faut gérer tous les traceurs si on veut pouvoir faire des 56 ! isotopes 57 ! dq(:,:,1:2)=q(:,:,1:2) 58 dq(:,:,1:nqtot)=q(:,:,1:nqtot) 65 59 66 CALL advtrac( pbaru,pbarv, 67 * p, masse,q,iapptrac, teta, 68 . flxw, pk) 60 ! test des valeurs minmax 61 !c CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ') 62 !c CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ') 63 endif ! of if (planet_type.eq."earth") 64 ! advection 69 65 70 c 66 CALL advtrac( pbaru,pbarv, & 67 p, masse,q,iapptrac, teta, & 68 flxw, pk) 71 69 72 IF( iapptrac.EQ.iapp_tracvl ) THEN 73 if (planet_type.eq."earth") then 74 ! Earth-specific treatment for the first 2 tracers (water) 75 c 76 cc CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur ') 77 cc CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide ') 70 ! 78 71 79 cc .... Calcul de deltap qu'on stocke dans finmasse ... 80 c 81 DO l = 1, llm 82 DO ij = 1, ip1jmp1 83 finmasse(ij,l) = p(ij,l) - p(ij,l+1) 84 ENDDO 85 ENDDO 72 IF( iapptrac.EQ.iapp_tracvl ) THEN 73 if (planet_type.eq."earth") then 74 ! Earth-specific treatment for the first 2 tracers (water) 75 ! 76 !c CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur ') 77 !c CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide ') 86 78 87 !write(*,*) 'caladvtrac 87' 88 CALL qminimum( q, nqtot, finmasse ) 89 !write(*,*) 'caladvtrac 89' 79 !c .... Calcul de deltap qu'on stocke dans finmasse ... 80 ! 81 DO l = 1, llm 82 DO ij = 1, ip1jmp1 83 finmasse(ij,l) = p(ij,l) - p(ij,l+1) 84 ENDDO 85 ENDDO 90 86 91 CALL SCOPY ( ip1jmp1*llm, masse, 1, finmasse, 1 ) 92 CALL filtreg ( finmasse , jjp1, llm, -2, 2, .TRUE., 1 ) 93 c 94 c ***** Calcul de dq pour l'eau , pour le passer a la physique ****** 95 c ******************************************************************** 96 c 97 dtvrtrac = iapp_tracvl * dtvr 98 c 99 DO iq = 1 , nqtot 100 DO l = 1 , llm 101 DO ij = 1,ip1jmp1 102 dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l) 103 * / dtvrtrac 104 ENDDO 105 ENDDO 106 ENDDO 107 c 108 endif ! of if (planet_type.eq."earth") 109 ELSE 110 if (planet_type.eq."earth") then 111 ! Earth-specific treatment for the first 2 tracers (water) 112 dq(:,:,1:nqtot)=0. 113 endif ! of if (planet_type.eq."earth") 114 ENDIF ! of IF( iapptrac.EQ.iapp_tracvl ) 87 ! !write(*,*) 'caladvtrac 87' 88 CALL qminimum( q, nqtot, finmasse ) 89 ! !write(*,*) 'caladvtrac 89' 115 90 116 END 91 CALL SCOPY ( ip1jmp1*llm, masse, 1, finmasse, 1 ) 92 CALL filtreg ( finmasse , jjp1, llm, -2, 2, .TRUE., 1 ) 93 ! 94 ! ***** Calcul de dq pour l'eau , pour le passer a la physique ****** 95 ! ******************************************************************** 96 ! 97 dtvrtrac = iapp_tracvl * dtvr 98 ! 99 DO iq = 1 , nqtot 100 DO l = 1 , llm 101 DO ij = 1,ip1jmp1 102 dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l) & 103 / dtvrtrac 104 ENDDO 105 ENDDO 106 ENDDO 107 ! 108 endif ! of if (planet_type.eq."earth") 109 ELSE 110 if (planet_type.eq."earth") then 111 ! Earth-specific treatment for the first 2 tracers (water) 112 dq(:,:,1:nqtot)=0. 113 endif ! of if (planet_type.eq."earth") 114 ENDIF ! of IF( iapptrac.EQ.iapp_tracvl ) 115 116 END SUBROUTINE caladvtrac 117 117 118 118
Note: See TracChangeset
for help on using the changeset viewer.