source: LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3d/caladvtrac.F @ 1299

Last change on this file since 1299 was 1299, checked in by Laurent Fairhead, 14 years ago

Nettoyage general pour se rapprocher des normes et éviter des erreurs a la
compilation:

  • tous les FLOAT() sont remplacés par des REAL()
  • tous les STOP dans phylmd sont remplacés par des appels à abort_gcm
  • le common control défini dans le fichier control.h est remplacé par le module control_mod pour éviter des messages sur l'alignement des variables dans les déclarations
  • des $Header$ remplacés par des $Id$ pour svn

Quelques remplacements à faire ont pu m'échapper


General cleanup of the code to try and adhere to norms and to prevent some
compilation errors:

  • all FLOAT() instructions have been replaced by REAL() instructions
  • all STOP instructions in phylmd have been replaced by calls to abort_gcm
  • the common block control defined in the control.h file has been replaced by the control_mod to prevent compilation warnings on the alignement of declared variables
  • $Header$ replaced by $Id$ for svn

Some changes which should have been made might have escaped me

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1!
2! $Id: caladvtrac.F 1299 2010-01-20 14:27:21Z fairhead $
3!
4c
5c
6            SUBROUTINE caladvtrac(q,pbaru,pbarv ,
7     *                   p ,masse, dq ,  teta,
8     *                   flxw, pk)
9c
10      USE infotrac
11      USE control_mod
12 
13      IMPLICIT NONE
14c
15c     Auteurs:   F.Hourdin , P.Le Van, F.Forget, F.Codron 
16c
17c     F.Codron (10/99) : ajout humidite specifique pour eau vapeur
18c=======================================================================
19c
20c       Shema de  Van Leer
21c
22c=======================================================================
23
24
25#include "dimensions.h"
26#include "paramet.h"
27#include "comconst.h"
28
29c   Arguments:
30c   ----------
31      REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
32      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
33      REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
34      REAL               :: flxw(ip1jmp1,llm)
35
36c  ..................................................................
37c
38c  .. dq n'est utilise et dimensionne que pour l'eau  vapeur et liqu.
39c
40c  ..................................................................
41c
42c   Local:
43c   ------
44
45      EXTERNAL  advtrac,minmaxq, qminimum
46      INTEGER ij,l, iq, iapptrac
47      REAL finmasse(ip1jmp1,llm), dtvrtrac
48
49cc
50c
51C initialisation
52        dq = 0.
53
54        CALL SCOPY( 2 * ijp1llm, q, 1, dq, 1 )
55
56c  test des valeurs minmax
57cc        CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur (a) ')
58cc        CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide(a) ')
59
60c   advection
61
62        CALL advtrac( pbaru,pbarv,
63     *       p,  masse,q,iapptrac, teta,
64     .       flxw, pk)
65c
66
67         IF( iapptrac.EQ.iapp_tracvl ) THEN
68c
69cc          CALL minmaxq(q(1,1,1),1.e33,-1.e33,'Eau vapeur     ')
70cc          CALL minmaxq(q(1,1,2),1.e33,-1.e33,'Eau liquide    ')
71
72cc     ....  Calcul  de deltap  qu'on stocke dans finmasse   ...
73c
74          DO l = 1, llm
75           DO ij = 1, ip1jmp1
76             finmasse(ij,l) =  p(ij,l) - p(ij,l+1)
77           ENDDO
78          ENDDO
79         
80          if (planet_type.eq."earth") then
81! Earth-specific treatment of first 2 tracers (water)
82            CALL qminimum( q, 2, finmasse )
83          endif
84
85          CALL SCOPY   ( ip1jmp1*llm, masse, 1, finmasse,       1 )
86          CALL filtreg ( finmasse ,  jjp1,  llm, -2, 2, .TRUE., 1 )
87c
88c   *****  Calcul de dq pour l'eau , pour le passer a la physique ******
89c   ********************************************************************
90c
91          dtvrtrac = iapp_tracvl * dtvr
92c
93           DO iq = 1 , 2
94            DO l = 1 , llm
95             DO ij = 1,ip1jmp1
96             dq(ij,l,iq) = ( q(ij,l,iq) - dq(ij,l,iq) ) * finmasse(ij,l)
97     *                               /  dtvrtrac
98             ENDDO
99            ENDDO
100           ENDDO
101c
102         ELSE
103           DO iq = 1 , 2
104           DO l  = 1, llm
105             DO ij = 1,ip1jmp1
106              dq(ij,l,iq)  = 0.
107             ENDDO
108           ENDDO
109           ENDDO
110
111
112         ENDIF
113
114c
115
116c  ... On appelle  qminimum uniquement  pour l'eau vapeur et liquide  ..
117
118 
119      RETURN
120      END
121
122
Note: See TracBrowser for help on using the repository browser.