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

Contents of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 129 - (show annotations)
Fri Feb 13 18:22:38 2015 UTC (9 years, 3 months ago) by guez
File size: 3066 byte(s)
Removed arguments day0, anne0 of procedures initdynav and
inithist. Use directly day_ref, annee_ref instead.

Moved variables annee_ref, day_ref of module temps to module
dynetat0_m. Deleted variables dayref and anneeref of module conf_gcm_m
and removed them from namelist conf_gcm_nml. These variables were
troubling intermediary on the way to annee_ref and day_ref. Gave as
default values to annee_ref and day_ref the default values of dayref
and anneeref. Moved the test on raz_date from main unit gcm to
procedure dynetat0. Created namelist dynetat0_nml. Read annee_ref and
day_ref from standard input in dynetat0 and redefine them from
"start.nc" if not raz_date. Rationale: 1 - Choose the best programming
from the point of view of program gcm only, forgetting program ce0l. 2
- The normal case is to define annee_ref and day_ref from "start.nc"
so put them in module dynetat0_m rather than in conf_gcm_m. 3 - Try to
always read the same namelists in the same order regardless of choices
in previous namelists. Downsides: 1 -We now need the file "dynetat0.f"
for the program ce0l, because dynetat0_m is used by dynredem0. 2 - We
need to define annee_ref and day_ref from procedure etat0.

Removed useless variable day_end of module temps.

1 module conf_gcm_m
2
3 IMPLICIT NONE
4
5 INTEGER:: nday = 10 ! nombre de jours d'intégration
6 integer:: day_step = 240 ! nombre de pas par jour, multiple de iperiod
7
8 integer:: iperiod = 5
9 ! periode pour le pas Matsuno (en pas de temps)
10
11 integer:: iapp_tracvl = 5
12 ! Should normally be equal to "iperiod"
13 ! frequence du groupement des flux (en pas de temps)
14
15 integer:: iconser = 240
16 ! number of time steps between output of control variables
17
18 integer:: iecri = 1 ! time interval between outputs to "dyn_hist.nc" (in days)
19
20 integer:: iphysiq = 5
21 ! number of time steps of dynamics between calls to physics
22
23 logical:: raz_date = .false.
24 ! prise en compte de la date initiale de la namelist et remise à
25 ! zéro des compteurs de pas de temps (sinon on garde la date du
26 ! fichier restart)
27
28 integer:: periodav = 1
29 ! time interval between outputs in the dynamical part, in days
30
31 logical:: offline = .FALSE.
32 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
33
34 integer:: prt_level = 0 ! niveau d'impression souhaité (0 = minimum)
35
36 LOGICAL:: purmats= .FALSE.
37 ! Help = Choix du schema d'integration temporel.
38 ! y = pure Matsuno sinon c'est du Matsuno-leapfrog
39
40 INTEGER:: iflag_phys = 1
41 ! contrôle l'appel à la physique :
42 ! 0 : pas de physique
43 ! 1 : physique normale (appel à phylmd, phymars...) (default)
44 ! 2 : rappel Newtonien pour la température + friction au sol
45
46 contains
47
48 SUBROUTINE conf_gcm
49
50 ! Auteurs : L. Fairhead, P. Le Van
51 ! Version du 29/04/97
52
53 ! On ne compare pas les paramètres du zoom (grossismx, grossismy,
54 ! clon, clat) lus sur le fichier start avec ceux lus dans
55 ! une namelist, au début de gcm. Ces paramètres définissent entre
56 ! autres la grille et doivent être identiques, sinon il y aura
57 ! divergence du gcm.
58
59 use abort_gcm_m, only: abort_gcm
60 use comdissnew, only: read_comdissnew
61 use unit_nml_m, only: unit_nml
62
63 namelist /conf_gcm_nml/ raz_date, nday, day_step, iperiod, iapp_tracvl, &
64 iconser, iecri, periodav, iphysiq, offline
65
66 namelist /iniprint_nml/ prt_level
67
68 namelist /logic_nml/ purmats, iflag_phys
69
70 !------------------------------------
71
72 print *, "Call sequence information: conf_gcm"
73
74 print *, "Enter namelist 'iniprint_nml'."
75 read(unit=*, nml=iniprint_nml)
76 write(unit_nml, nml=iniprint_nml)
77
78 print *, "Enter namelist 'logic_nml'."
79 read(unit=*, nml=logic_nml)
80 write(unit_nml, nml=logic_nml)
81
82 call read_comdissnew
83
84 print *, "Enter namelist 'conf_gcm_nml'."
85 read(unit=*, nml=conf_gcm_nml)
86 write(unit_nml, nml=conf_gcm_nml)
87
88 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
89 message = &
90 'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
91 ierr = 1)
92
93 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
94 message = &
95 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
96 ierr = 1)
97
98 END SUBROUTINE conf_gcm
99
100 end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21