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

Diff of /trunk/dyn3d/leapfrog.f

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

trunk/libf/dyn3d/leapfrog.f90 revision 69 by guez, Mon Feb 18 16:33:12 2013 UTC trunk/dyn3d/leapfrog.f90 revision 76 by guez, Fri Nov 15 18:45:49 2013 UTC
# Line 45  contains Line 45  contains
45      ! potential temperature      ! potential temperature
46    
47      REAL, intent(inout):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol, en Pa      REAL, intent(inout):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol, en Pa
48      REAL masse(:, :, :) ! (iim + 1, jjm + 1, llm) masse d'air      REAL, intent(inout):: masse(:, :, :) ! (iim + 1, jjm + 1, llm) masse d'air
49      REAL, intent(in):: phis(:, :) ! (iim + 1, jjm + 1) surface geopotential      REAL, intent(in):: phis(:, :) ! (iim + 1, jjm + 1) surface geopotential
50    
51      REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)      REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)
# Line 57  contains Line 57  contains
57    
58      ! Variables dynamiques:      ! Variables dynamiques:
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é au milieu des couches
63      REAL phi(iim + 1, jjm + 1, llm) ! geopotential      REAL phi(iim + 1, jjm + 1, llm) ! geopotential
# Line 74  contains Line 74  contains
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), dq((iim + 1) * (jjm + 1), llm, nqmx)      REAL dteta(iim + 1, jjm + 1, llm)
78      real dp((iim + 1) * (jjm + 1))      real dp((iim + 1) * (jjm + 1))
79    
80      ! Tendances de la dissipation :      ! Tendances de la dissipation :
# 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 energie      ! Variables test conservation énergie
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 110  contains Line 110  contains
110      itaufin = nday * day_step      itaufin = nday * day_step
111      ! "day_step" is a multiple of "iperiod", therefore so is "itaufin".      ! "day_step" is a multiple of "iperiod", therefore so is "itaufin".
112    
     dq = 0.  
   
113      ! On initialise la pression et la fonction d'Exner :      ! On initialise la pression et la fonction d'Exner :
114      forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps      forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps
115      CALL exner_hyb(ps, p3d, pks, pk, pkf)      CALL exner_hyb(ps, p3d, pks, pk, pkf)
# Line 135  contains Line 133  contains
133         end if         end if
134    
135         ! Calcul des tendances dynamiques:         ! Calcul des tendances dynamiques:
136         CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)         CALL geopot(teta, pk, pks, phis, phi)
137         CALL caldyn(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &         CALL caldyn(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
138              dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &              dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &
139              conser=MOD(itau, iconser)==0)              conser=MOD(itau, iconser)==0)
140    
141         ! Calcul des tendances advection des traceurs (dont l'humidité)         CALL caladvtrac(q, pbaru, pbarv, p3d, masse, teta, pk)
        CALL caladvtrac(q, pbaru, pbarv, p3d, masse, dq, teta, pk)  
142    
143         ! Stokage du flux de masse pour traceurs offline:         ! Stokage du flux de masse pour traceurs offline:
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         ! Integrations dynamique et traceurs:         ! Intégrations 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 158  contains Line 155  contains
155            CALL exner_hyb(ps, p3d, pks, pk, pkf)            CALL exner_hyb(ps, p3d, pks, pk, pkf)
156    
157            ! Calcul des tendances dynamiques:            ! Calcul des tendances dynamiques:
158            CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)            CALL geopot(teta, pk, pks, phis, phi)
159            CALL caldyn(itau + 1, ucov, vcov, teta, ps, masse, pk, pkf, phis, &            CALL caldyn(itau + 1, ucov, vcov, teta, ps, masse, pk, pkf, phis, &
160                 phi, dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &                 phi, dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &
161                 conser=.false.)                 conser=.false.)
# Line 180  contains Line 177  contains
177            time = REAL(mod(itau, day_step)) / day_step + time_0            time = REAL(mod(itau, day_step)) / day_step + time_0
178            IF (time > 1.) time = time - 1.            IF (time > 1.) time = time - 1.
179    
180            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, masse, ps, pk, &            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, ps, pk, phis, phi, &
181                 phis, phi, dudyn, dv, dq, w, dufi, dvfi, dtetafi, dqfi, dpfi, &                 dudyn, dv, w, dufi, dvfi, dtetafi, dqfi, dpfi, &
182                 lafin = itau + 1 == itaufin)                 lafin = itau + 1 == itaufin)
183    
184            ! Ajout des tendances physiques:            ! Ajout des tendances physiques:
185            CALL addfi(nqmx, dtphys, ucov, vcov, teta, q, ps, dufi, dvfi, &            CALL addfi(ucov, vcov, teta, q, ps, dufi, dvfi, dtetafi, dqfi, dpfi)
                dtetafi, dqfi, dpfi)  
186         ENDIF         ENDIF
187    
188         forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps         forall (l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * ps
# Line 233  contains Line 229  contains
229         ENDIF         ENDIF
230    
231         IF (MOD(itau + 1, iecri * day_step) == 0) THEN         IF (MOD(itau + 1, iecri * day_step) == 0) THEN
232            CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)            CALL geopot(teta, pk, pks, phis, phi)
233            CALL writehist(itau, vcov, ucov, teta, phi, q, masse, ps)            CALL writehist(itau, vcov, ucov, teta, phi, q, masse, ps)
234         END IF         END IF
235      end do time_integration      end do time_integration
# Line 242  contains Line 238  contains
238           itau = itau_dyn + itaufin)           itau = itau_dyn + itaufin)
239    
240      ! Calcul des tendances dynamiques:      ! Calcul des tendances dynamiques:
241      CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)      CALL geopot(teta, pk, pks, phis, phi)
242      CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &      CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
243           dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &           dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &
244           conser = MOD(itaufin, iconser) == 0)           conser = MOD(itaufin, iconser) == 0)

Legend:
Removed from v.69  
changed lines
  Added in v.76

  ViewVC Help
Powered by ViewVC 1.1.21