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

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

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

revision 139 by guez, Tue May 26 17:46:03 2015 UTC revision 212 by guez, Thu Jan 12 12:31:31 2017 UTC
# Line 4  module calfis_m Line 4  module calfis_m
4    
5  contains  contains
6    
7    SUBROUTINE calfis(dayvrai, time, ucov, vcov, teta, q, pk, phis, phi, w, &    SUBROUTINE calfis(ucov, vcov, teta, q, p3d, pk, phis, phi, w, dufi, dvfi, &
8         dufi, dvfi, dtetafi, dqfi, lafin)         dtetafi, dqfi, dayvrai, time, lafin)
9    
10      ! From dyn3d/calfis.F, version 1.3, 2005/05/25 13:10:09      ! From dyn3d/calfis.F, version 1.3, 2005/05/25 13:10:09
11      ! Authors: P. Le Van, F. Hourdin      ! Authors: P. Le Van, F. Hourdin
# Line 30  contains Line 30  contains
30      ! rayonnement) et l'aire de la maille (quand on veut int\'egrer une      ! rayonnement) et l'aire de la maille (quand on veut int\'egrer une
31      ! grandeur horizontalement).      ! grandeur horizontalement).
32    
33      use comconst, only: kappa, cpp, dtphys, g      use comconst, only: kappa, cpp, g
34      use comgeom, only: apoln, cu_2d, cv_2d, unsaire_2d, apols      use comgeom, only: apoln, cu_2d, cv_2d, unsaire_2d, apols
35      use dimens_m, only: iim, jjm, llm, nqmx      use dimens_m, only: iim, jjm, llm, nqmx
36      use dimphy, only: klon      use dimphy, only: klon
# Line 39  contains Line 39  contains
39      use grid_change, only: dyn_phy, gr_fi_dyn      use grid_change, only: dyn_phy, gr_fi_dyn
40      use nr_util, only: pi      use nr_util, only: pi
41      use physiq_m, only: physiq      use physiq_m, only: physiq
     use pressure_var, only: p3d, pls  
   
     integer, intent(in):: dayvrai  
     ! current day number, based at value 1 on January 1st of annee_ref  
   
     REAL, intent(in):: time ! time of day, as a fraction of day length  
42    
43      REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm)      REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm)
44      ! covariant zonal velocity      ! covariant zonal velocity
# Line 58  contains Line 52  contains
52      REAL, intent(in):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)      REAL, intent(in):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)
53      ! mass fractions of advected fields      ! mass fractions of advected fields
54    
55        REAL, intent(in):: p3d(:, :, :) ! (iim + 1, jjm + 1, llm + 1)
56        ! pressure at layer interfaces, in Pa
57        ! ("p3d(i, j, l)" is at longitude "rlonv(i)", latitude "rlatu(j)",
58        ! for interface "l")
59    
60      REAL, intent(in):: pk(:, :, :) ! (iim + 1, jjm + 1, llm)      REAL, intent(in):: pk(:, :, :) ! (iim + 1, jjm + 1, llm)
61      ! Exner = cp * (p / preff)**kappa      ! Exner = cp * (p / preff)**kappa
62    
# Line 75  contains Line 74  contains
74      ! tendency for the potential temperature      ! tendency for the potential temperature
75    
76      REAL, intent(out):: dqfi(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)      REAL, intent(out):: dqfi(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)
77    
78        integer, intent(in):: dayvrai
79        ! current day number, based at value 1 on January 1st of annee_ref
80    
81        REAL, intent(in):: time ! time of day, as a fraction of day length
82      LOGICAL, intent(in):: lafin      LOGICAL, intent(in):: lafin
83    
84      ! Local:      ! Local:
# Line 104  contains Line 108  contains
108      ! 43. Température et pression milieu couche      ! 43. Température et pression milieu couche
109      DO l = 1, llm      DO l = 1, llm
110         pksurcp = pk(:, :, l) / cpp         pksurcp = pk(:, :, l) / cpp
111         pls(:, :, l) = preff * pksurcp**(1./ kappa)         play(:, l) = pack(preff * pksurcp**(1./ kappa), dyn_phy)
        play(:, l) = pack(pls(:, :, l), dyn_phy)  
112         t(:, l) = pack(teta(:, :, l) * pksurcp, dyn_phy)         t(:, l) = pack(teta(:, :, l) * pksurcp, dyn_phy)
113      ENDDO      ENDDO
114    
# Line 179  contains Line 182  contains
182      forall(l = 1: llm) v(:, l) = pack(zvfi(:, :, l), dyn_phy)      forall(l = 1: llm) v(:, l) = pack(zvfi(:, :, l), dyn_phy)
183    
184      ! Appel de la physique :      ! Appel de la physique :
185      CALL physiq(lafin, dayvrai, time, dtphys, paprs, play, pphi, pphis, u, &      CALL physiq(lafin, dayvrai, time, paprs, play, pphi, pphis, u, v, t, qx, &
186           v, t, qx, omega, d_u, d_v, d_t, d_qx)           omega, d_u, d_v, d_t, d_qx)
187    
188      ! transformation des tendances physiques en tendances dynamiques:      ! transformation des tendances physiques en tendances dynamiques:
189    
# Line 216  contains Line 219  contains
219         DO j = 2, jjm         DO j = 2, jjm
220            ig0 = 1 + (j - 2) * iim            ig0 = 1 + (j - 2) * iim
221            DO i = 1, iim - 1            DO i = 1, iim - 1
222               dufi(i, j, l) = 0.5 * (d_u(ig0 + i, l) + d_u(ig0 + i+1, l)) &               dufi(i, j, l) = 0.5 * (d_u(ig0 + i, l) + d_u(ig0 + i + 1, l)) &
223                    * cu_2d(i, j)                    * cu_2d(i, j)
224            ENDDO            ENDDO
225            dufi(iim, j, l) = 0.5 * (d_u(ig0 + 1, l) + d_u(ig0 + iim, l)) &            dufi(iim, j, l) = 0.5 * (d_u(ig0 + 1, l) + d_u(ig0 + iim, l)) &
# Line 231  contains Line 234  contains
234         DO j = 2, jjm - 1         DO j = 2, jjm - 1
235            ig0 = 1 + (j - 2) * iim            ig0 = 1 + (j - 2) * iim
236            DO i = 1, iim            DO i = 1, iim
237               dvfi(i, j, l) = 0.5 * (d_v(ig0 + i, l) + d_v(ig0 + i+iim, l)) &               dvfi(i, j, l) = 0.5 * (d_v(ig0 + i, l) + d_v(ig0 + i + iim, l)) &
238                    * cv_2d(i, j)                    * cv_2d(i, j)
239            ENDDO            ENDDO
240            dvfi(iim + 1, j, l) = dvfi(1, j, l)            dvfi(iim + 1, j, l) = dvfi(1, j, l)

Legend:
Removed from v.139  
changed lines
  Added in v.212

  ViewVC Help
Powered by ViewVC 1.1.21