source: LMDZ4/trunk/libf/phylmd/tracinca_mod.F90 @ 1563

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

Merged LMDZ4V5.0-dev branch changes r1292:r1399 to trunk.

Validation:
Validation consisted in compiling the HEAD revision of the trunk,
LMDZ4V5.0-dev branch and the merged sources and running different
configurations on local and SX8 machines comparing results.

Local machine: bench configuration, 32x24x11, gfortran

  • IPSLCM5A configuration (comparison between trunk and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent
  • MH07 configuration, new physics package (comparison between LMDZ4V5.0-dev branch and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent

SX8 machine (brodie), 96x95x39 on 4 processors:

  • IPSLCM5A configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent
  • MH07 configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent

Changes to the makegcm and create_make_gcm scripts to take into account
main programs in F90 files


Fusion de la branche LMDZ4V5.0-dev (r1292:r1399) au tronc principal

Validation:
La validation a consisté à compiler la HEAD de le trunk et de la banche
LMDZ4V5.0-dev et les sources fusionnées et de faire tourner le modéle selon
différentes configurations en local et sur SX8 et de comparer les résultats

En local: 32x24x11, config bench/gfortran

  • pour une config IPSLCM5A (comparaison tronc/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux (à part sur RN et Pb)
    • fichiers histoire égaux
  • pour une config nlle physique (MH07) (comparaison LMDZ4v5.0-dev/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux
    • fichiers histoire équivalents

Sur brodie, 96x95x39 sur 4 proc:

  • pour une config IPSLCM5A:
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc
  • pour une config MH07
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc

Changement sur makegcm et create_make-gcm pour pouvoir prendre en compte des
programmes principaux en *F90

File size: 6.3 KB
Line 
1!$Id $
2!
3MODULE tracinca_mod
4!
5! This module prepares and calls the INCA main subroutines.
6!
7
8CONTAINS
9
10  SUBROUTINE tracinca_init(aerosol,lessivage)
11    ! This subroutine initialize some control varaibles.
12
13    USE infotrac
14    IMPLICIT NONE
15   
16    ! Output variables
17    LOGICAL,DIMENSION(nbtr), INTENT(OUT) :: aerosol
18    LOGICAL,INTENT(OUT) :: lessivage
19   
20   
21    ! Initialization
22    lessivage  =.FALSE.
23    aerosol(:) = .FALSE.
24       
25  END SUBROUTINE tracinca_init
26
27  SUBROUTINE tracinca(                                &
28       nstep,    julien,   gmtime,         lafin,     &
29       pdtphys,  t_seri,   paprs,          pplay,     &
30       pmfu,     ftsol,    pctsrf,         pphis,     &
31       pphi,     albsol,   sh,             rh,        &
32       cldfra,   rneb,     diafra,         cldliq,    &
33       itop_con, ibas_con, pmflxr,         pmflxs,    &
34       prfl,     psfl,     aerosol_couple, flxmass_w, &
35       tau_aero, piz_aero, cg_aero,        ccm,       &
36       rfname,                                        &
37       tr_seri,  source,   solsym)     
38
39!========================================================
40!    -- CHIMIE INCA --
41!========================================================
42
43    USE dimphy
44    USE infotrac
45    USE vampir
46    USE comgeomphy
47    USE control_mod
48
49   
50    IMPLICIT NONE
51   
52    INCLUDE "indicesol.h"
53    INCLUDE "dimensions.h"
54    INCLUDE "paramet.h"
55
56!==========================================================================
57!                   -- DESCRIPTION DES ARGUMENTS --
58!==========================================================================
59
60
61! EN ENTREE ...
62!
63!Configuration grille,temps:
64    INTEGER,INTENT(IN) :: nstep      ! Appel physique
65    INTEGER,INTENT(IN) :: julien     ! Jour julien
66    REAL,INTENT(IN)    :: gmtime
67    REAL,INTENT(IN)    :: pdtphys    ! Pas d'integration pour la physique (seconde)
68    LOGICAL,INTENT(IN) :: lafin      ! le flag de la fin de la physique
69   
70
71!Physique:
72!--------
73    REAL,DIMENSION(klon,klev),INTENT(IN)   :: t_seri  ! Temperature
74    REAL,DIMENSION(klon,klev),INTENT(IN)   :: sh      ! humidite specifique
75    REAL,DIMENSION(klon,klev),INTENT(IN)   :: rh      ! humidite relative
76    REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs   ! pression pour chaque inter-couche (en Pa)
77    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pplay   ! pression pour le mileu de chaque couche (en Pa)
78    REAL,DIMENSION(klon,klev),INTENT(IN)   :: pphi    ! geopotentiel
79    REAL,DIMENSION(klon),INTENT(IN)        :: pphis
80    REAL,DIMENSION(klon,klev),INTENT(IN)   :: cldliq  ! eau liquide nuageuse
81    REAL,DIMENSION(klon,klev),INTENT(IN)   :: cldfra  ! fraction nuageuse (tous les nuages)
82    REAL,DIMENSION(klon,klev),INTENT(IN)   :: diafra  ! fraction nuageuse (convection ou stratus artificiels)
83    REAL,DIMENSION(klon,klev),INTENT(IN)   :: rneb    ! fraction nuageuse (grande echelle)
84    INTEGER,DIMENSION(klon),INTENT(IN)     :: itop_con
85    INTEGER,DIMENSION(klon),INTENT(IN)     :: ibas_con
86    REAL,DIMENSION(klon),INTENT(IN)        :: albsol  ! albedo surface
87!
88!Convection:
89!----------
90    REAL,DIMENSION(klon,klev),INTENT(IN) :: pmfu  ! flux de masse dans le panache montant
91
92!...Tiedke     
93    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: pmflxr, pmflxs ! Flux precipitant de pluie, neige aux interfaces [convection]
94    REAL,DIMENSION(klon,klev+1),INTENT(IN)   :: prfl, psfl ! Flux precipitant de pluie, neige aux interfaces [large-scale]
95
96    LOGICAL,INTENT(IN)                       :: aerosol_couple
97    REAL,DIMENSION(klon,klev),INTENT(IN)     :: flxmass_w
98    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: tau_aero
99    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: piz_aero
100    REAL,DIMENSION(klon,klev,9,2),INTENT(IN) :: cg_aero
101    CHARACTER(len=4),DIMENSION(9),INTENT(IN) :: rfname
102    REAL,DIMENSION(klon,klev,2),INTENT(IN)   :: ccm
103
104! Arguments necessaires pour les sources et puits de traceur:
105    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol  ! Temperature du sol (surf)(Kelvin)
106    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: pctsrf ! Pourcentage de sol f(nature du sol)
107
108
109  ! InOutput argument
110    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT) :: tr_seri ! Concentration Traceur [U/KgA] 
111
112  ! Output arguments
113    REAL,DIMENSION(klon,nbtr), INTENT(OUT)        :: source  ! a voir lorsque le flux de surface est prescrit
114    CHARACTER(len=8),DIMENSION(nbtr), INTENT(OUT) :: solsym
115
116!=======================================================================================
117!                        -- VARIABLES LOCALES TRACEURS --
118!=======================================================================================
119
120    INTEGER :: k
121    REAL,DIMENSION(klon,klev) :: pdel
122    REAL    :: calday
123    INTEGER :: ncsec
124
125    CALL VTe(VTphysiq)
126    CALL VTb(VTinca)
127   
128    calday = REAL(julien) + gmtime
129    ncsec  = NINT (86400.*gmtime)
130     
131    DO k = 1, klev
132       pdel(:,k) = paprs(:,k) - paprs (:,k+1)
133    END DO
134   
135    IF (config_inca == 'aero') THEN
136#ifdef INCA
137       CALL aerosolmain(                    &
138            aerosol_couple,tr_seri,pdtphys, &
139            pplay,pdel,prfl,pmflxr,psfl,    &
140            pmflxs,pmfu,itop_con,ibas_con,  &
141            pphi,airephy,nstep,rneb,t_seri, &     
142            rh,tau_aero,piz_aero,cg_aero,   &
143            rfname,ccm,lafin)
144#endif
145    END IF
146
147#ifdef INCA
148    CALL chemmain (tr_seri, &   !mmr
149         nstep,      & !nstep
150         calday,     & !calday
151         julien,     & !ncdate
152         ncsec,      & !ncsec
153         1,          & !lat
154         pdtphys,    & !delt
155         paprs(1,1), & !ps
156         pplay,      & !pmid
157         pdel,       & !pdel
158         airephy,    &
159         pctsrf(1,1),& !oro
160         ftsol,      & !tsurf
161         albsol,     & !albs
162         pphi,       & !zma
163         pphis,      & !phis
164         cldfra,     & !cldfr
165         rneb,       & !cldfr_st
166         diafra,     & !cldfr_cv
167         itop_con,   & !cldtop
168         ibas_con,   & !cldbot
169         cldliq,     & !cwat
170         prfl,       & !flxrst
171         pmflxr,     & !flxrcv
172         psfl,       & !flxsst
173         pmflxs,     & !flxscv
174         pmfu,       & !flxupd
175         flxmass_w,  & !flxmass_w
176         t_seri,     & !tfld
177         sh,         & !sh
178         rh,         & !rh
179         iip1,       & !nx
180         jjp1,       & !ny
181         source,     &
182         solsym)
183#endif
184   
185    CALL VTe(VTinca)
186    CALL VTb(VTphysiq)
187   
188   
189  END SUBROUTINE tracinca
190
191
192END MODULE tracinca_mod
Note: See TracBrowser for help on using the repository browser.