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

Diff of /trunk/dyn3d/caladvtrac.f

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

revision 27 by guez, Thu Mar 25 14:29:07 2010 UTC revision 71 by guez, Mon Jul 8 18:12:18 2013 UTC
# Line 1  Line 1 
1  SUBROUTINE caladvtrac(q, pbaru, pbarv, p, masse, dq, teta, pk)  module caladvtrac_m
   
   ! From dyn3d/caladvtrac.F, version 1.3 2005/04/13 08:58:34  
   
   ! Authors : F. Hourdin, P. Le Van, F. Forget, F. Codron  
   ! F. Codron (10/99) : ajout humidité spécifique pour eau vapeur  
   ! Schéma de Van Leer  
   
   use dimens_m, only: iim, jjm, llm, nqmx  
   use paramet_m, only: ip1jmp1  
   use comconst, only: dtvr  
   use conf_gcm_m, only: iapp_tracvl  
   use filtreg_m, only: filtreg  
2    
3    IMPLICIT NONE    IMPLICIT NONE
4    
5    REAL pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm), masse(ip1jmp1, llm)  contains
   REAL, intent(in):: p(ip1jmp1, llm + 1)  
   real q(ip1jmp1, llm, nqmx)  
6    
7    real, intent(out):: dq(ip1jmp1, llm, 2)    SUBROUTINE caladvtrac(q, pbaru, pbarv, p, masse, teta, pk)
   ! (n'est utilisé et dimensionné que pour l'eau vapeur et liquide)  
8    
9    REAL teta(ip1jmp1, llm), pk(ip1jmp1, llm)      ! From dyn3d/caladvtrac.F, version 1.3 2005/04/13 08:58:34
10        ! Authors: F. Hourdin, P. Le Van, F. Forget, F. Codron
11        ! F. Codron (10/99) : ajout humidité spécifique pour eau vapeur
12        ! Schéma de Van Leer
13    
14    ! Local:      ! Calcul des tendances advection des traceurs (dont l'humidité)
15    
16    EXTERNAL  advtrac, qminimum      use advtrac_m, only: advtrac
17    INTEGER l, iq, iapptrac      use conf_gcm_m, only: iapp_tracvl
18    REAL finmasse(ip1jmp1, llm), dtvrtrac      use dimens_m, only: iim, jjm, llm, nqmx
19        use paramet_m, only: ip1jmp1
20        use qminimum_m, only: qminimum
21    
22    !------------------------------------------------      real, intent(inout):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx)
23        REAL, intent(in):: pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm)
24        REAL, intent(in):: p(iim + 1, jjm + 1, llm + 1)
25        real, intent(in):: masse(iim + 1, jjm + 1, llm)
26        REAL, intent(in):: teta(ip1jmp1, llm)
27        real, intent(in):: pk(ip1jmp1, llm)
28    
29    dq(:, :, :) = q(:, :, :2) ! initialisation      ! Local:
30        INTEGER l, iapptrac
31        REAL finmasse(iim + 1, jjm + 1, llm)
32    
33    ! Advection:      !------------------------------------------------
   CALL advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, pk)  
34    
35    IF (iapptrac == iapp_tracvl) THEN      ! Advection:
36       ! Calcul  de deltap  qu'on stocke dans finmasse      CALL advtrac(pbaru, pbarv, p, masse, q, iapptrac, teta, pk)
      forall (l = 1:llm) finmasse(:, l) =  p(:, l) - p(:, l+1)  
37    
38       ! On appelle "qminimum" uniquement  pour l'eau vapeur et liquide      IF (iapptrac == iapp_tracvl) THEN
39       CALL qminimum(q, 2, finmasse)         forall (l = 1:llm) finmasse(:, :, l) =  p(:, :, l) - p(:, :, l+1)
40    
41       finmasse(:, :) = masse(:, :)         ! Uniquement pour l'eau vapeur et liquide:
42       CALL filtreg(finmasse, jjm + 1, llm, -2, 2, .TRUE., 1)         CALL qminimum(q, 2, finmasse)
43        ENDIF
44    
45       ! Calcul de "dq" pour l'eau, pour le passer à la physique    END SUBROUTINE caladvtrac
      dtvrtrac = iapp_tracvl * dtvr  
      DO iq = 1, 2  
         dq(:, :, iq) = (q(:, :, iq) - dq(:, :, iq)) * finmasse(:, :) &  
              /  dtvrtrac  
      ENDDO  
   ELSE  
      dq(:, :, :)  = 0.  
   ENDIF  
46    
47  END SUBROUTINE caladvtrac  end module caladvtrac_m

Legend:
Removed from v.27  
changed lines
  Added in v.71

  ViewVC Help
Powered by ViewVC 1.1.21