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

Annotation of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 129 - (hide 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 guez 3 module conf_gcm_m
2    
3     IMPLICIT NONE
4    
5 guez 39 INTEGER:: nday = 10 ! nombre de jours d'intégration
6     integer:: day_step = 240 ! nombre de pas par jour, multiple de iperiod
7 guez 3
8 guez 39 integer:: iperiod = 5
9 guez 3 ! periode pour le pas Matsuno (en pas de temps)
10    
11 guez 39 integer:: iapp_tracvl = 5
12 guez 3 ! Should normally be equal to "iperiod"
13     ! frequence du groupement des flux (en pas de temps)
14    
15 guez 39 integer:: iconser = 240
16     ! number of time steps between output of control variables
17 guez 3
18 guez 39 integer:: iecri = 1 ! time interval between outputs to "dyn_hist.nc" (in days)
19 guez 3
20 guez 40 integer:: iphysiq = 5
21     ! number of time steps of dynamics between calls to physics
22    
23 guez 15 logical:: raz_date = .false.
24 guez 98 ! 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 guez 3
28 guez 56 integer:: periodav = 1
29     ! time interval between outputs in the dynamical part, in days
30 guez 3
31 guez 12 logical:: offline = .FALSE.
32 guez 33 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
33 guez 3
34 guez 57 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 guez 3 contains
47    
48 guez 13 SUBROUTINE conf_gcm
49 guez 3
50     ! Auteurs : L. Fairhead, P. Le Van
51     ! Version du 29/04/97
52    
53 guez 97 ! On ne compare pas les paramètres du zoom (grossismx, grossismy,
54 guez 113 ! clon, clat) lus sur le fichier start avec ceux lus dans
55 guez 97 ! 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 guez 3
59 guez 33 use abort_gcm_m, only: abort_gcm
60 guez 3 use comdissnew, only: read_comdissnew
61 guez 57 use unit_nml_m, only: unit_nml
62 guez 3
63 guez 129 namelist /conf_gcm_nml/ raz_date, nday, day_step, iperiod, iapp_tracvl, &
64     iconser, iecri, periodav, iphysiq, offline
65 guez 3
66 guez 129 namelist /iniprint_nml/ prt_level
67 guez 57
68 guez 115 namelist /logic_nml/ purmats, iflag_phys
69 guez 57
70 guez 3 !------------------------------------
71    
72     print *, "Call sequence information: conf_gcm"
73 guez 12
74 guez 57 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 guez 12 call read_comdissnew
83 guez 3
84     print *, "Enter namelist 'conf_gcm_nml'."
85     read(unit=*, nml=conf_gcm_nml)
86 guez 57 write(unit_nml, nml=conf_gcm_nml)
87 guez 3
88 guez 40 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
89 guez 33 message = &
90     'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
91     ierr = 1)
92    
93 guez 69 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
94 guez 40 message = &
95 guez 33 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
96     ierr = 1)
97    
98 guez 3 END SUBROUTINE conf_gcm
99    
100     end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21