/[lmdze]/trunk/Sources/dyn3d/leapfrog.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/leapfrog.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/dyn3d/leapfrog.f90 revision 78 by guez, Wed Feb 5 17:51:07 2014 UTC trunk/dyn3d/leapfrog.f revision 90 by guez, Wed Mar 12 21:16:36 2014 UTC
# Line 59  contains Line 59  contains
59    
60      REAL pks(iim + 1, jjm + 1) ! exner au sol      REAL pks(iim + 1, jjm + 1) ! exner au sol
61      REAL pk(iim + 1, jjm + 1, llm) ! exner au milieu des couches      REAL pk(iim + 1, jjm + 1, llm) ! exner au milieu des couches
62      REAL pkf(iim + 1, jjm + 1, llm) ! exner filtré au milieu des couches      REAL pkf(iim + 1, jjm + 1, llm) ! exner filtr\'e au milieu des couches
63      REAL phi(iim + 1, jjm + 1, llm) ! geopotential      REAL phi(iim + 1, jjm + 1, llm) ! geopotential
64      REAL w((iim + 1) * (jjm + 1), llm) ! vitesse verticale      REAL w((iim + 1) * (jjm + 1), llm) ! vitesse verticale
65    
# Line 73  contains Line 73  contains
73      REAL massem1(iim + 1, jjm + 1, llm)      REAL massem1(iim + 1, jjm + 1, llm)
74    
75      ! Tendances dynamiques      ! Tendances dynamiques
76      REAL dv((iim + 1) * jjm, llm), dudyn((iim + 1) * (jjm + 1), llm)      REAL dv((iim + 1) * jjm, llm), dudyn(iim + 1, jjm + 1, llm)
77      REAL dteta(iim + 1, jjm + 1, llm)      REAL dteta(iim + 1, jjm + 1, llm)
78      real dp((iim + 1) * (jjm + 1))      real dp((iim + 1) * (jjm + 1))
79    
# Line 95  contains Line 95  contains
95      INTEGER l      INTEGER l
96      REAL rdayvrai, rdaym_ini      REAL rdayvrai, rdaym_ini
97    
98      ! Variables test conservation énergie      ! Variables test conservation \'energie
99      REAL ecin(iim + 1, jjm + 1, llm), ecin0(iim + 1, jjm + 1, llm)      REAL ecin(iim + 1, jjm + 1, llm), ecin0(iim + 1, jjm + 1, llm)
100    
101      REAL vcont((iim + 1) * jjm, llm), ucont((iim + 1) * (jjm + 1), llm)      REAL vcont((iim + 1) * jjm, llm), ucont((iim + 1) * (jjm + 1), llm)
# Line 144  contains Line 144  contains
144         IF (offline) CALL fluxstokenc(pbaru, pbarv, masse, teta, phi, phis, &         IF (offline) CALL fluxstokenc(pbaru, pbarv, masse, teta, phi, phis, &
145              dtvr, itau)              dtvr, itau)
146    
147         ! Intégrations dynamique et traceurs:         ! Int\'egrations dynamique et traceurs:
148         CALL integrd(vcovm1, ucovm1, tetam1, psm1, massem1, dv, dudyn, dteta, &         CALL integrd(vcovm1, ucovm1, tetam1, psm1, massem1, dv, dudyn, dteta, &
149              dp, vcov, ucov, teta, q(:, :, :, :2), ps, masse, finvmaold, dt, &              dp, vcov, ucov, teta, q(:, :, :, :2), ps, masse, finvmaold, dt, &
150              leapf)              leapf)
# Line 178  contains Line 178  contains
178            IF (time > 1.) time = time - 1.            IF (time > 1.) time = time - 1.
179    
180            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, ps, pk, phis, phi, &            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, ps, pk, phis, phi, &
181                 dudyn, dv, w, dufi, dvfi, dtetafi, dqfi, dpfi, &                 w, dufi, dvfi, dtetafi, dqfi, dpfi, lafin = itau + 1 == itaufin)
                lafin = itau + 1 == itaufin)  
182    
183            ! Ajout des tendances physiques:            ! Ajout des tendances physiques:
184            CALL addfi(ucov, vcov, teta, q, ps, dufi, dvfi, dtetafi, dqfi, dpfi)            CALL addfi(ucov, vcov, teta, q, ps, dufi, dvfi, dtetafi, dqfi, dpfi)
# Line 189  contains Line 188  contains
188         CALL exner_hyb(ps, p3d, pks, pk, pkf)         CALL exner_hyb(ps, p3d, pks, pk, pkf)
189    
190         IF (MOD(itau + 1, idissip) == 0) THEN         IF (MOD(itau + 1, idissip) == 0) THEN
191            ! Dissipation horizontale et verticale des petites échelles            ! Dissipation horizontale et verticale des petites \'echelles
192    
193            ! calcul de l'énergie cinétique avant dissipation            ! calcul de l'\'energie cin\'etique avant dissipation
194            call covcont(llm, ucov, vcov, ucont, vcont)            call covcont(llm, ucov, vcov, ucont, vcont)
195            call enercin(vcov, ucov, vcont, ucont, ecin0)            call enercin(vcov, ucov, vcont, ucont, ecin0)
196    
# Line 200  contains Line 199  contains
199            ucov = ucov + dudis            ucov = ucov + dudis
200            vcov = vcov + dvdis            vcov = vcov + dvdis
201    
202            ! On ajoute la tendance due à la transformation énergie            ! On ajoute la tendance due \`a la transformation \'energie
203            ! cinétique en énergie thermique par la dissipation            ! cin\'etique en \'energie thermique par la dissipation
204            call covcont(llm, ucov, vcov, ucont, vcont)            call covcont(llm, ucov, vcov, ucont, vcont)
205            call enercin(vcov, ucov, vcont, ucont, ecin)            call enercin(vcov, ucov, vcont, ucont, ecin)
206            dtetadis = dtetadis + (ecin0 - ecin) / pk            dtetadis = dtetadis + (ecin0 - ecin) / pk
207            teta = teta + dtetadis            teta = teta + dtetadis
208    
209            ! Calcul de la valeur moyenne aux pôles :            ! Calcul de la valeur moyenne aux p\^oles :
210            forall (l = 1: llm)            forall (l = 1: llm)
211               teta(:, 1, l) = SUM(aire_2d(:iim, 1) * teta(:iim, 1, l)) &               teta(:, 1, l) = SUM(aire_2d(:iim, 1) * teta(:iim, 1, l)) &
212                    / apoln                    / apoln
213               teta(:, jjm + 1, l) = SUM(aire_2d(:iim, jjm+1) &               teta(:, jjm + 1, l) = SUM(aire_2d(:iim, jjm+1) &
214                    * teta(:iim, jjm + 1, l)) / apols                    * teta(:iim, jjm + 1, l)) / apols
215            END forall            END forall
   
           ps(:, 1) = SUM(aire_2d(:iim, 1) * ps(:iim, 1)) / apoln  
           ps(:, jjm + 1) = SUM(aire_2d(:iim, jjm+1) * ps(:iim, jjm + 1)) &  
                / apols  
216         END IF         END IF
217    
218         IF (MOD(itau + 1, iperiod) == 0) THEN         IF (MOD(itau + 1, iperiod) == 0) THEN
219            ! Écriture du fichier histoire moyenne:            ! \'Ecriture du fichier histoire moyenne:
220            CALL writedynav(vcov, ucov, teta, pk, phi, q, masse, ps, phis, &            CALL writedynav(vcov, ucov, teta, pk, phi, q, masse, ps, phis, &
221                 time = itau + 1)                 time = itau + 1)
222            call bilan_dyn(ps, masse, pk, pbaru, pbarv, teta, phi, ucov, vcov, &            call bilan_dyn(ps, masse, pk, pbaru, pbarv, teta, phi, ucov, vcov, &

Legend:
Removed from v.78  
changed lines
  Added in v.90

  ViewVC Help
Powered by ViewVC 1.1.21