Changeset 5144 for LMDZ6/branches/Amaury_dev/libf/phylmd/cltracrn.F90
- Timestamp:
- Jul 29, 2024, 11:01:04 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/cltracrn.F90
r5101 r5144 1 1 !$Id $ 2 2 3 SUBROUTINE cltracrn( itr, dtime,u1lay, v1lay, &4 cdrag,coef,t,ftsol,pctsrf,&5 tr,trs,paprs,pplay,delp,&6 masktr,fshtr,hsoltr,tautr,vdeptr,&7 lat,d_tr,d_trs)8 3 SUBROUTINE cltracrn(itr, dtime, u1lay, v1lay, & 4 cdrag, coef, t, ftsol, pctsrf, & 5 tr, trs, paprs, pplay, delp, & 6 masktr, fshtr, hsoltr, tautr, vdeptr, & 7 lat, d_tr, d_trs) 8 9 9 USE dimphy 10 10 USE traclmdz_mod, ONLY: id_rn, id_pb 11 11 USE indice_sol_mod 12 USE lmdz_yomcst 12 13 13 14 IMPLICIT NONE 14 !====================================================================== 15 ! Auteur(s): Alex/LMD) date: fev 99 16 ! inspire de clqh + clvent 17 ! Objet: diffusion verticale de traceurs avec quantite de traceur ds 18 ! le sol ( reservoir de sol de radon ) 19 20 ! note : pour l'instant le traceur dans le sol et le flux sont 21 ! calcules mais ils ne servent que de diagnostiques 22 ! seule la tendance sur le traceur est sortie (d_tr) 23 !--------------------------------------------------------------------- 24 ! Arguments: 25 ! itr......input-R- le type de traceur : id_rn(radon), id_pb(plomb) 26 ! dtime....input-R- intervalle du temps (en secondes) ~ pdtphys 27 ! u1lay....input-R- vent u de la premiere couche (m/s) 28 ! v1lay....input-R- vent v de la premiere couche (m/s) 29 ! cdrag....input-R- cdrag 30 ! coef.....input-R- le coefficient d'echange (m**2/s) l>1, valable uniquement pour k entre 2 et klev 31 ! t........input-R- temperature (K) 32 ! paprs....input-R- pression a inter-couche (Pa) 33 ! pplay....input-R- pression au milieu de couche (Pa) 34 ! delp.....input-R- epaisseur de couche (Pa) 35 ! ftsol....input-R- temperature du sol (en Kelvin) 36 ! tr.......input-R- traceurs 37 ! trs......input-R- traceurs dans le sol 38 ! masktr...input-R- Masque reservoir de sol traceur (1 = reservoir) 39 ! fshtr....input-R- Flux surfacique de production dans le sol 40 ! tautr....input-R- Constante de decroissance du traceur 41 ! vdeptr...input-R- Vitesse de depot sec dans la couche brownienne 42 ! hsoltr...input-R- Epaisseur equivalente du reservoir de sol 43 ! lat......input-R- latitude en degree 44 ! d_tr.....output-R- le changement de "tr" 45 ! d_trs....output-R- le changement de "trs" 46 !====================================================================== 47 include "YOMCST.h" 48 49 !Entrees 50 INTEGER,INTENT(IN) :: itr 51 REAL,INTENT(IN) :: dtime 52 REAL,DIMENSION(klon),INTENT(IN) :: u1lay, v1lay 53 REAL,DIMENSION(klon),INTENT(IN) :: cdrag 54 REAL,DIMENSION(klon,klev),INTENT(IN) :: coef, t 55 REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol, pctsrf 56 REAL,DIMENSION(klon,klev),INTENT(IN) :: tr 57 REAL,DIMENSION(klon),INTENT(IN) :: trs 58 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs 59 REAL,DIMENSION(klon,klev),INTENT(IN) :: pplay, delp 60 REAL,DIMENSION(klon),INTENT(IN) :: masktr 61 REAL,DIMENSION(klon),INTENT(IN) :: fshtr 62 REAL,INTENT(IN) :: hsoltr 63 REAL,INTENT(IN) :: tautr 64 REAL,INTENT(IN) :: vdeptr 65 REAL,DIMENSION(klon),INTENT(IN) :: lat 66 67 !Sorties 68 REAL,DIMENSION(klon,klev),INTENT(OUT) :: d_tr 69 REAL,DIMENSION(klon),INTENT(OUT) :: d_trs ! (diagnostic) traceur ds le sol 70 71 !Locales 72 REAL,DIMENSION(klon,klev) :: flux_tr ! (diagnostic) flux de traceur 73 INTEGER :: i, k, n, l 74 REAL,DIMENSION(klon) :: rotrhi 75 REAL,DIMENSION(klon,klev) :: zx_coef 76 REAL,DIMENSION(klon) :: zx_buf 77 REAL,DIMENSION(klon,klev) :: zx_ctr 78 REAL,DIMENSION(klon,klev) :: zx_dtr 79 REAL,DIMENSION(klon) :: zx_trs 80 REAL :: zx_a, zx_b 81 82 REAL,DIMENSION(klon,klev) :: local_tr 83 REAL,DIMENSION(klon) :: local_trs 84 REAL,DIMENSION(klon) :: zts ! champ de temperature du sol 85 REAL,DIMENSION(klon) :: zx_alpha1, zx_alpha2 86 !====================================================================== 87 !AA Pour l'instant les 4 types de surface ne sont pas pris en compte 88 !AA On fabrique avec zts un champ de temperature de sol 89 !AA que le pondere par la fraction de nature de sol. 90 91 DO i = 1,klon 92 zts(i) = 0. 93 ENDDO 94 95 DO n=1,nbsrf 96 DO i = 1,klon 97 zts(i) = zts(i) + ftsol(i,n)*pctsrf(i,n) 98 ENDDO 99 ENDDO 100 101 DO i = 1,klon 102 rotrhi(i) = RD * zts(i) / hsoltr 15 !====================================================================== 16 ! Auteur(s): Alex/LMD) date: fev 99 17 ! inspire de clqh + clvent 18 ! Objet: diffusion verticale de traceurs avec quantite de traceur ds 19 ! le sol ( reservoir de sol de radon ) 20 21 ! note : pour l'instant le traceur dans le sol et le flux sont 22 ! calcules mais ils ne servent que de diagnostiques 23 ! seule la tendance sur le traceur est sortie (d_tr) 24 !--------------------------------------------------------------------- 25 ! Arguments: 26 ! itr......input-R- le type de traceur : id_rn(radon), id_pb(plomb) 27 ! dtime....input-R- intervalle du temps (en secondes) ~ pdtphys 28 ! u1lay....input-R- vent u de la premiere couche (m/s) 29 ! v1lay....input-R- vent v de la premiere couche (m/s) 30 ! cdrag....input-R- cdrag 31 ! coef.....input-R- le coefficient d'echange (m**2/s) l>1, valable uniquement pour k entre 2 et klev 32 ! t........input-R- temperature (K) 33 ! paprs....input-R- pression a inter-couche (Pa) 34 ! pplay....input-R- pression au milieu de couche (Pa) 35 ! delp.....input-R- epaisseur de couche (Pa) 36 ! ftsol....input-R- temperature du sol (en Kelvin) 37 ! tr.......input-R- traceurs 38 ! trs......input-R- traceurs dans le sol 39 ! masktr...input-R- Masque reservoir de sol traceur (1 = reservoir) 40 ! fshtr....input-R- Flux surfacique de production dans le sol 41 ! tautr....input-R- Constante de decroissance du traceur 42 ! vdeptr...input-R- Vitesse de depot sec dans la couche brownienne 43 ! hsoltr...input-R- Epaisseur equivalente du reservoir de sol 44 ! lat......input-R- latitude en degree 45 ! d_tr.....output-R- le changement de "tr" 46 ! d_trs....output-R- le changement de "trs" 47 !====================================================================== 48 49 !Entrees 50 INTEGER, INTENT(IN) :: itr 51 REAL, INTENT(IN) :: dtime 52 REAL, DIMENSION(klon), INTENT(IN) :: u1lay, v1lay 53 REAL, DIMENSION(klon), INTENT(IN) :: cdrag 54 REAL, DIMENSION(klon, klev), INTENT(IN) :: coef, t 55 REAL, DIMENSION(klon, nbsrf), INTENT(IN) :: ftsol, pctsrf 56 REAL, DIMENSION(klon, klev), INTENT(IN) :: tr 57 REAL, DIMENSION(klon), INTENT(IN) :: trs 58 REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs 59 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay, delp 60 REAL, DIMENSION(klon), INTENT(IN) :: masktr 61 REAL, DIMENSION(klon), INTENT(IN) :: fshtr 62 REAL, INTENT(IN) :: hsoltr 63 REAL, INTENT(IN) :: tautr 64 REAL, INTENT(IN) :: vdeptr 65 REAL, DIMENSION(klon), INTENT(IN) :: lat 66 67 !Sorties 68 REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_tr 69 REAL, DIMENSION(klon), INTENT(OUT) :: d_trs ! (diagnostic) traceur ds le sol 70 71 !Locales 72 REAL, DIMENSION(klon, klev) :: flux_tr ! (diagnostic) flux de traceur 73 INTEGER :: i, k, n, l 74 REAL, DIMENSION(klon) :: rotrhi 75 REAL, DIMENSION(klon, klev) :: zx_coef 76 REAL, DIMENSION(klon) :: zx_buf 77 REAL, DIMENSION(klon, klev) :: zx_ctr 78 REAL, DIMENSION(klon, klev) :: zx_dtr 79 REAL, DIMENSION(klon) :: zx_trs 80 REAL :: zx_a, zx_b 81 82 REAL, DIMENSION(klon, klev) :: local_tr 83 REAL, DIMENSION(klon) :: local_trs 84 REAL, DIMENSION(klon) :: zts ! champ de temperature du sol 85 REAL, DIMENSION(klon) :: zx_alpha1, zx_alpha2 86 !====================================================================== 87 !AA Pour l'instant les 4 types de surface ne sont pas pris en compte 88 !AA On fabrique avec zts un champ de temperature de sol 89 !AA que le pondere par la fraction de nature de sol. 90 91 DO i = 1, klon 92 zts(i) = 0. 93 ENDDO 94 95 DO n = 1, nbsrf 96 DO i = 1, klon 97 zts(i) = zts(i) + ftsol(i, n) * pctsrf(i, n) 98 ENDDO 99 ENDDO 100 101 DO i = 1, klon 102 rotrhi(i) = RD * zts(i) / hsoltr 103 103 ENDDO 104 104 105 105 DO k = 1, klev 106 107 local_tr(i,k) = tr(i,k)108 109 ENDDO 110 111 DO i = 1, klon 112 113 ENDDO 114 !======================================================================115 !AA Attention si dans clmain zx_alf1(i) = 1.0 116 !AA Il doit y avoir coherence (dc la meme chose ici)117 118 DO i = 1, klon 119 !AA zx_alpha1(i) = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2))120 121 122 ENDDO 123 !======================================================================124 DO i = 1, klon 125 zx_coef(i,1) = cdrag(i)*(1.0+SQRT(u1lay(i)**2+v1lay(i)**2)) &126 *pplay(i,1)/(RD*t(i,1))127 zx_coef(i,1) = zx_coef(i,1) * dtime*RG106 DO i = 1, klon 107 local_tr(i, k) = tr(i, k) 108 ENDDO 109 ENDDO 110 111 DO i = 1, klon 112 local_trs(i) = trs(i) 113 ENDDO 114 !====================================================================== 115 !AA Attention si dans clmain zx_alf1(i) = 1.0 116 !AA Il doit y avoir coherence (dc la meme chose ici) 117 118 DO i = 1, klon 119 !AA zx_alpha1(i) = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2)) 120 zx_alpha1(i) = 1.0 121 zx_alpha2(i) = 1.0 - zx_alpha1(i) 122 ENDDO 123 !====================================================================== 124 DO i = 1, klon 125 zx_coef(i, 1) = cdrag(i) * (1.0 + SQRT(u1lay(i)**2 + v1lay(i)**2)) & 126 * pplay(i, 1) / (RD * t(i, 1)) 127 zx_coef(i, 1) = zx_coef(i, 1) * dtime * RG 128 128 ENDDO 129 129 130 130 DO k = 2, klev 131 132 zx_coef(i,k) = coef(i,k)*RG/(pplay(i,k-1)-pplay(i,k)) &133 *(paprs(i,k)*2/(t(i,k)+t(i,k-1))/RD)**2134 zx_coef(i,k) = zx_coef(i,k) * dtime*RG135 136 ENDDO 137 !======================================================================138 DO i = 1, klon 139 zx_buf(i) = delp(i,klev) + zx_coef(i,klev)140 zx_ctr(i,klev) = local_tr(i,klev)*delp(i,klev)/zx_buf(i)141 zx_dtr(i,klev) = zx_coef(i,klev) / zx_buf(i)142 ENDDO 143 144 DO l = klev -1, 2, -1145 146 zx_buf(i) = delp(i,l)+zx_coef(i,l) &147 +zx_coef(i,l+1)*(1.-zx_dtr(i,l+1))148 149 zx_ctr(i,l) = ( local_tr(i,l)*delp(i,l) &150 + zx_coef(i,l+1)*zx_ctr(i,l+1) )/zx_buf(i)151 zx_dtr(i,l) = zx_coef(i,l) / zx_buf(i)152 153 ENDDO 154 155 DO i = 1, klon 156 zx_buf(i) = delp(i,1) + zx_coef(i,2)*(1.-zx_dtr(i,2)) &157 + masktr(i) * zx_coef(i,1) &158 *( zx_alpha1(i)+zx_alpha2(i)*zx_dtr(i,2))159 160 zx_ctr(i,1) = ( local_tr(i,1)*delp(i,1) &161 + zx_ctr(i,2) &162 *(zx_coef(i,2) &163 - masktr(i) * zx_coef(i,1) &164 *zx_alpha2(i) )) / zx_buf(i)165 zx_dtr(i,1) = masktr(i) * zx_coef(i,1) / zx_buf(i)166 ENDDO 167 !======================================================================168 ! Calculer d'abord local_trs nouvelle quantite dans le reservoir169 ! de sol170 !=====================================================================171 172 DO i = 1, klon 173 !-------------------------174 ! Au dessus des continents175 !--176 ! Le pb peut se deposer partout : vdeptr = 10-3 m/s177 ! Le Rn est traiter commme une couche Brownienne puisque vdeptr = 0.178 !-------------------------------------------------------------------179 IF ( NINT(masktr(i)) == 1) THEN180 181 182 +fshtr(i)*dtime*rotrhi(i) &183 +rotrhi(i)*masktr(i)*zx_coef(i,1)/RG &184 *(zx_ctr(i,1)*(zx_alpha1(i)+zx_alpha2(i)*zx_dtr(i,2)) &185 +zx_alpha2(i)*zx_ctr(i,2))186 ! Pour l'instant, pour aller vite, le depot sec est traite comme une decroissance187 zx_b = 1. + rotrhi(i)*masktr(i)*zx_coef(i,1)/RG &188 * (1.-zx_dtr(i,1) &189 *(zx_alpha1(i)+zx_alpha2(i)*zx_dtr(i,2))) &190 + dtime / tautr &191 + dtime * vdeptr / hsoltr192 193 194 195 !--------------------------------------------------------196 ! Si on est entre 60N et 70N on divise par 2 l'emanation197 !--------------------------------------------------------198 199 IF ((itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)>=60..AND.lat(i)<=70.).OR. &200 (itr==id_pb.AND.NINT(masktr(i))==1.AND.lat(i)>=60..AND.lat(i)<=70.)) THEN201 202 203 +(fshtr(i)/2.)*dtime*rotrhi(i) &204 +rotrhi(i)*masktr(i)*zx_coef(i,1)/RG &205 *(zx_ctr(i,1)*(zx_alpha1(i)+zx_alpha2(i)*zx_dtr(i,2)) &206 +zx_alpha2(i)*zx_ctr(i,2))207 208 zx_b = 1. + rotrhi(i)*masktr(i)*zx_coef(i,1)/RG &209 * (1.-zx_dtr(i,1) &210 *(zx_alpha1(i)+zx_alpha2(i)*zx_dtr(i,2))) &211 + dtime / tautr &212 + dtime * vdeptr / hsoltr213 214 215 216 217 218 !----------------------------------------------219 ! Au dessus des oceans et aux hautes latitudes220 !--221 ! au dessous de -60S pas d'emission de radon au dessus 222 ! des oceans et des continents223 !---------------------------------------------------------------224 225 IF ((itr==id_rn.AND.NINT(masktr(i))==0).OR. &226 (itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)<-60.)) THEN227 228 229 230 !--231 ! au dessus de 70 N pas d'emission de radon au dessus 232 ! des oceans et des continents233 !--------------------------------------------------------------234 IF ((itr==id_rn.AND.NINT(masktr(i))==0).OR. &235 (itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)>70.)) THEN236 237 238 239 !---------------------------------------------240 ! Au dessus des oceans la source est nulle241 !--------------------------------------------242 243 244 245 246 131 DO i = 1, klon 132 zx_coef(i, k) = coef(i, k) * RG / (pplay(i, k - 1) - pplay(i, k)) & 133 * (paprs(i, k) * 2 / (t(i, k) + t(i, k - 1)) / RD)**2 134 zx_coef(i, k) = zx_coef(i, k) * dtime * RG 135 ENDDO 136 ENDDO 137 !====================================================================== 138 DO i = 1, klon 139 zx_buf(i) = delp(i, klev) + zx_coef(i, klev) 140 zx_ctr(i, klev) = local_tr(i, klev) * delp(i, klev) / zx_buf(i) 141 zx_dtr(i, klev) = zx_coef(i, klev) / zx_buf(i) 142 ENDDO 143 144 DO l = klev - 1, 2, -1 145 DO i = 1, klon 146 zx_buf(i) = delp(i, l) + zx_coef(i, l) & 147 + zx_coef(i, l + 1) * (1. - zx_dtr(i, l + 1)) 148 149 zx_ctr(i, l) = (local_tr(i, l) * delp(i, l) & 150 + zx_coef(i, l + 1) * zx_ctr(i, l + 1)) / zx_buf(i) 151 zx_dtr(i, l) = zx_coef(i, l) / zx_buf(i) 152 ENDDO 153 ENDDO 154 155 DO i = 1, klon 156 zx_buf(i) = delp(i, 1) + zx_coef(i, 2) * (1. - zx_dtr(i, 2)) & 157 + masktr(i) * zx_coef(i, 1) & 158 * (zx_alpha1(i) + zx_alpha2(i) * zx_dtr(i, 2)) 159 160 zx_ctr(i, 1) = (local_tr(i, 1) * delp(i, 1) & 161 + zx_ctr(i, 2) & 162 * (zx_coef(i, 2) & 163 - masktr(i) * zx_coef(i, 1) & 164 * zx_alpha2(i))) / zx_buf(i) 165 zx_dtr(i, 1) = masktr(i) * zx_coef(i, 1) / zx_buf(i) 166 ENDDO 167 !====================================================================== 168 ! Calculer d'abord local_trs nouvelle quantite dans le reservoir 169 ! de sol 170 !===================================================================== 171 172 DO i = 1, klon 173 !------------------------- 174 ! Au dessus des continents 175 !-- 176 ! Le pb peut se deposer partout : vdeptr = 10-3 m/s 177 ! Le Rn est traiter commme une couche Brownienne puisque vdeptr = 0. 178 !------------------------------------------------------------------- 179 IF (NINT(masktr(i)) == 1) THEN 180 zx_trs(i) = local_trs(i) 181 zx_a = zx_trs(i) & 182 + fshtr(i) * dtime * rotrhi(i) & 183 + rotrhi(i) * masktr(i) * zx_coef(i, 1) / RG & 184 * (zx_ctr(i, 1) * (zx_alpha1(i) + zx_alpha2(i) * zx_dtr(i, 2)) & 185 + zx_alpha2(i) * zx_ctr(i, 2)) 186 ! Pour l'instant, pour aller vite, le depot sec est traite comme une decroissance 187 zx_b = 1. + rotrhi(i) * masktr(i) * zx_coef(i, 1) / RG & 188 * (1. - zx_dtr(i, 1) & 189 * (zx_alpha1(i) + zx_alpha2(i) * zx_dtr(i, 2))) & 190 + dtime / tautr & 191 + dtime * vdeptr / hsoltr 192 zx_trs(i) = zx_a / zx_b 193 local_trs(i) = zx_trs(i) 194 ENDIF 195 !-------------------------------------------------------- 196 ! Si on est entre 60N et 70N on divise par 2 l'emanation 197 !-------------------------------------------------------- 198 199 IF ((itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)>=60..AND.lat(i)<=70.).OR. & 200 (itr==id_pb.AND.NINT(masktr(i))==1.AND.lat(i)>=60..AND.lat(i)<=70.)) THEN 201 zx_trs(i) = local_trs(i) 202 zx_a = zx_trs(i) & 203 + (fshtr(i) / 2.) * dtime * rotrhi(i) & 204 + rotrhi(i) * masktr(i) * zx_coef(i, 1) / RG & 205 * (zx_ctr(i, 1) * (zx_alpha1(i) + zx_alpha2(i) * zx_dtr(i, 2)) & 206 + zx_alpha2(i) * zx_ctr(i, 2)) 207 208 zx_b = 1. + rotrhi(i) * masktr(i) * zx_coef(i, 1) / RG & 209 * (1. - zx_dtr(i, 1) & 210 * (zx_alpha1(i) + zx_alpha2(i) * zx_dtr(i, 2))) & 211 + dtime / tautr & 212 + dtime * vdeptr / hsoltr 213 214 zx_trs(i) = zx_a / zx_b 215 local_trs(i) = zx_trs(i) 216 ENDIF 217 218 !---------------------------------------------- 219 ! Au dessus des oceans et aux hautes latitudes 220 !-- 221 ! au dessous de -60S pas d'emission de radon au dessus 222 ! des oceans et des continents 223 !--------------------------------------------------------------- 224 225 IF ((itr==id_rn.AND.NINT(masktr(i))==0).OR. & 226 (itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)<-60.)) THEN 227 zx_trs(i) = 0. 228 local_trs(i) = 0. 229 END IF 230 !-- 231 ! au dessus de 70 N pas d'emission de radon au dessus 232 ! des oceans et des continents 233 !-------------------------------------------------------------- 234 IF ((itr==id_rn.AND.NINT(masktr(i))==0).OR. & 235 (itr==id_rn.AND.NINT(masktr(i))==1.AND.lat(i)>70.)) THEN 236 zx_trs(i) = 0. 237 local_trs(i) = 0. 238 END IF 239 !--------------------------------------------- 240 ! Au dessus des oceans la source est nulle 241 !-------------------------------------------- 242 243 IF (itr==id_rn.AND.NINT(masktr(i))==0) THEN 244 zx_trs(i) = 0. 245 local_trs(i) = 0. 246 END IF 247 247 248 248 ENDDO ! sur le i=1,klon 249 249 250 !======================================================================251 ! Une fois on a zx_trs, on peut faire l'iteration 252 !====================================================================== 253 254 DO i = 1, klon 255 local_tr(i,1) = zx_ctr(i,1)+zx_dtr(i,1)*zx_trs(i)250 !====================================================================== 251 ! Une fois on a zx_trs, on peut faire l'iteration 252 !====================================================================== 253 254 DO i = 1, klon 255 local_tr(i, 1) = zx_ctr(i, 1) + zx_dtr(i, 1) * zx_trs(i) 256 256 ENDDO 257 257 DO l = 2, klev 258 259 local_tr(i,l) = zx_ctr(i,l) + zx_dtr(i,l)*local_tr(i,l-1)260 261 ENDDO 262 !======================================================================263 ! Calcul du flux de traceur (flux_tr): UA/(m**2 s)264 !======================================================================265 DO i = 1, klon 266 flux_tr(i,1) = masktr(i)*zx_coef(i,1)/RG &267 * (zx_alpha1(i)*local_tr(i,1)+zx_alpha2(i)*local_tr(i,2) &268 -zx_trs(i)) / dtime258 DO i = 1, klon 259 local_tr(i, l) = zx_ctr(i, l) + zx_dtr(i, l) * local_tr(i, l - 1) 260 ENDDO 261 ENDDO 262 !====================================================================== 263 ! Calcul du flux de traceur (flux_tr): UA/(m**2 s) 264 !====================================================================== 265 DO i = 1, klon 266 flux_tr(i, 1) = masktr(i) * zx_coef(i, 1) / RG & 267 * (zx_alpha1(i) * local_tr(i, 1) + zx_alpha2(i) * local_tr(i, 2) & 268 - zx_trs(i)) / dtime 269 269 ENDDO 270 270 DO l = 2, klev 271 272 flux_tr(i,l) = zx_coef(i,l)/RG &273 * (local_tr(i,l)-local_tr(i,l-1)) / dtime274 275 ENDDO 276 !======================================================================277 ! Calcul des tendances du traceur ds le sol et dans l'atmosphere278 !======================================================================271 DO i = 1, klon 272 flux_tr(i, l) = zx_coef(i, l) / RG & 273 * (local_tr(i, l) - local_tr(i, l - 1)) / dtime 274 ENDDO 275 ENDDO 276 !====================================================================== 277 ! Calcul des tendances du traceur ds le sol et dans l'atmosphere 278 !====================================================================== 279 279 DO l = 1, klev 280 281 d_tr(i,l) = local_tr(i,l) - tr(i,l)282 283 ENDDO 284 DO i = 1, klon 285 280 DO i = 1, klon 281 d_tr(i, l) = local_tr(i, l) - tr(i, l) 282 ENDDO 283 ENDDO 284 DO i = 1, klon 285 d_trs(i) = local_trs(i) - trs(i) 286 286 ENDDO 287 287
Note: See TracChangeset
for help on using the changeset viewer.