/[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

revision 56 by guez, Tue Jan 10 19:02:02 2012 UTC revision 67 by guez, Tue Oct 2 15:50:56 2012 UTC
# Line 6  contains Line 6  contains
6    
7    SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0)    SUBROUTINE leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0)
8    
9      ! From dyn3d/leapfrog.F, version 1.6, 2005/04/13 08:58:34      ! From dyn3d/leapfrog.F, version 1.6, 2005/04/13 08:58:34 revision 616
10      ! Authors: P. Le Van, L. Fairhead, F. Hourdin      ! Authors: P. Le Van, L. Fairhead, F. Hourdin
11      ! Matsuno-leapfrog scheme.      ! Matsuno-leapfrog scheme.
12    
# Line 17  contains Line 17  contains
17      USE calfis_m, ONLY: calfis      USE calfis_m, ONLY: calfis
18      USE comconst, ONLY: daysec, dtphys, dtvr      USE comconst, ONLY: daysec, dtphys, dtvr
19      USE comgeom, ONLY: aire_2d, apoln, apols      USE comgeom, ONLY: aire_2d, apoln, apols
20      USE comvert, ONLY: ap, bp      USE disvert_m, ONLY: ap, bp
21      USE conf_gcm_m, ONLY: day_step, iconser, iperiod, iphysiq, nday, offline      USE conf_gcm_m, ONLY: day_step, iconser, iperiod, iphysiq, nday, offline, &
22             iflag_phys, ok_guide
23      USE dimens_m, ONLY: iim, jjm, llm, nqmx      USE dimens_m, ONLY: iim, jjm, llm, nqmx
24      use dissip_m, only: dissip      use dissip_m, only: dissip
25      USE dynetat0_m, ONLY: day_ini      USE dynetat0_m, ONLY: day_ini
# Line 29  contains Line 30  contains
30      USE guide_m, ONLY: guide      USE guide_m, ONLY: guide
31      use inidissip_m, only: idissip      use inidissip_m, only: idissip
32      use integrd_m, only: integrd      use integrd_m, only: integrd
     USE logic, ONLY: iflag_phys, ok_guide  
33      use nr_util, only: assert      use nr_util, only: assert
34      USE pressure_var, ONLY: p3d      USE pressure_var, ONLY: p3d
35      USE temps, ONLY: itau_dyn      USE temps, ONLY: itau_dyn
# Line 43  contains Line 43  contains
43      ! potential temperature      ! potential temperature
44    
45      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
46      REAL masse((iim + 1) * (jjm + 1), llm) ! masse d'air      REAL masse(:, :, :) ! (iim + 1, jjm + 1, llm) masse d'air
47      REAL phis((iim + 1) * (jjm + 1)) ! geopotentiel au sol      REAL phis(:, :) ! (iim + 1, jjm + 1) geopotentiel au sol
48    
49      REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)      REAL, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)
50      ! mass fractions of advected fields      ! mass fractions of advected fields
# Line 57  contains Line 57  contains
57    
58      REAL pks((iim + 1) * (jjm + 1)) ! exner au sol      REAL pks((iim + 1) * (jjm + 1)) ! exner au sol
59      REAL pk(iim + 1, jjm + 1, llm) ! exner au milieu des couches      REAL pk(iim + 1, jjm + 1, llm) ! exner au milieu des couches
60      REAL pkf((iim + 1) * (jjm + 1), llm) ! exner filt.au milieu des couches      REAL pkf(iim + 1, jjm + 1, llm) ! exner filtré au milieu des couches
61      REAL phi(iim + 1, jjm + 1, llm) ! geopotential      REAL phi(iim + 1, jjm + 1, llm) ! geopotential
62      REAL w((iim + 1) * (jjm + 1), llm) ! vitesse verticale      REAL w((iim + 1) * (jjm + 1), llm) ! vitesse verticale
63    
# Line 68  contains Line 68  contains
68      ! Variables dynamiques au pas - 1      ! Variables dynamiques au pas - 1
69      REAL vcovm1(iim + 1, jjm, llm), ucovm1(iim + 1, jjm + 1, llm)      REAL vcovm1(iim + 1, jjm, llm), ucovm1(iim + 1, jjm + 1, llm)
70      REAL tetam1(iim + 1, jjm + 1, llm), psm1(iim + 1, jjm + 1)      REAL tetam1(iim + 1, jjm + 1, llm), psm1(iim + 1, jjm + 1)
71      REAL massem1((iim + 1) * (jjm + 1), llm)      REAL massem1(iim + 1, jjm + 1, llm)
72    
73      ! Tendances dynamiques      ! Tendances dynamiques
74      REAL dv((iim + 1) * jjm, llm), dudyn((iim + 1) * (jjm + 1), llm)      REAL dv((iim + 1) * jjm, llm), dudyn((iim + 1) * (jjm + 1), llm)
# Line 89  contains Line 89  contains
89      INTEGER itau ! index of the time step of the dynamics, starts at 0      INTEGER itau ! index of the time step of the dynamics, starts at 0
90      INTEGER itaufin      INTEGER itaufin
91      REAL time ! time of day, as a fraction of day length      REAL time ! time of day, as a fraction of day length
92      real finvmaold((iim + 1) * (jjm + 1), llm)      real finvmaold(iim + 1, jjm + 1, llm)
93      INTEGER l      INTEGER l
94      REAL rdayvrai, rdaym_ini      REAL rdayvrai, rdaym_ini
95    
# Line 106  contains Line 106  contains
106      call assert(shape(ucov) == (/iim + 1, jjm + 1, llm/), "leapfrog")      call assert(shape(ucov) == (/iim + 1, jjm + 1, llm/), "leapfrog")
107    
108      itaufin = nday * day_step      itaufin = nday * day_step
109      ! "day_step" is a multiple of "iperiod", therefore "itaufin" is one too      ! "day_step" is a multiple of "iperiod", therefore so is "itaufin".
110    
111      dq = 0.      dq = 0.
112    
# Line 129  contains Line 129  contains
129            massem1 = masse            massem1 = masse
130            psm1 = ps            psm1 = ps
131            finvmaold = masse            finvmaold = masse
132            CALL filtreg(finvmaold, jjm + 1, llm, - 2, 2, .TRUE., 1)            CALL filtreg(finvmaold, jjm + 1, llm, - 2, 2, .TRUE.)
133         end if         end if
134    
135         ! Calcul des tendances dynamiques:         ! Calcul des tendances dynamiques:
# Line 180  contains Line 180  contains
180    
181            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, masse, ps, pk, &            CALL calfis(rdayvrai, time, ucov, vcov, teta, q, masse, ps, pk, &
182                 phis, phi, dudyn, dv, dq, w, dufi, dvfi, dtetafi, dqfi, dpfi, &                 phis, phi, dudyn, dv, dq, w, dufi, dvfi, dtetafi, dqfi, dpfi, &
183                 lafin=itau+1==itaufin)                 lafin = itau + 1 == itaufin)
184    
185            ! ajout des tendances physiques:            ! ajout des tendances physiques:
186            CALL addfi(nqmx, dtphys, ucov, vcov, teta, q, ps, dufi, dvfi, &            CALL addfi(nqmx, dtphys, ucov, vcov, teta, q, ps, dufi, dvfi, &
# Line 224  contains Line 224  contains
224    
225         IF (MOD(itau + 1, iperiod) == 0) THEN         IF (MOD(itau + 1, iperiod) == 0) THEN
226            ! Écriture du fichier histoire moyenne:            ! Écriture du fichier histoire moyenne:
227            CALL writedynav(nqmx, itau + 1, vcov, ucov, teta, pk, phi, q, &            CALL writedynav(vcov, ucov, teta, pk, phi, q, masse, ps, phis, &
228                 masse, ps, phis)                 time = itau + 1)
229            call bilan_dyn(ps, masse, pk, pbaru, pbarv, teta, phi, ucov, vcov, &            call bilan_dyn(ps, masse, pk, pbaru, pbarv, teta, phi, ucov, vcov, &
230                 q(:, :, :, 1), dt_app = dtvr * iperiod)                 q(:, :, :, 1))
231         ENDIF         ENDIF
232      end do time_integration      end do time_integration
233    
234      CALL dynredem1("restart.nc", vcov, ucov, teta, q, masse, ps, &      CALL dynredem1("restart.nc", vcov, ucov, teta, q, masse, ps, &
235           itau=itau_dyn+itaufin)           itau = itau_dyn + itaufin)
236    
237      ! Calcul des tendances dynamiques:      ! Calcul des tendances dynamiques:
238      CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)      CALL geopot((iim + 1) * (jjm + 1), teta, pk, pks, phis, phi)
239      CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &      CALL caldyn(itaufin, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
240           dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &           dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, &
241           conser=MOD(itaufin, iconser)==0)           conser = MOD(itaufin, iconser) == 0)
242    
243    END SUBROUTINE leapfrog    END SUBROUTINE leapfrog
244    

Legend:
Removed from v.56  
changed lines
  Added in v.67

  ViewVC Help
Powered by ViewVC 1.1.21