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

Contents of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 113 - (show annotations)
Thu Sep 18 19:56:46 2014 UTC (9 years, 7 months ago) by guez
File size: 3470 byte(s)
Moved the call to read_serre out of conf_gcm so that it can be called
only in the program ce0l, not in gcm. In gcm, variables of module
serre are read from start file. Added reading of dzoomx, dzoomy, taux,
tauy from start file, in dynetat0. Those variables were written by
dynredem0 but not read.

Removed possibility fxyhypb = false, because the geometric part of the
program is such a mess. Could then remove variables transx, transy,
alphax, alphay, pxo, pyo of module serre.

Bug fix in tau2alpha: missing save attributes. The first call to
tau2alpha needs to compute dxdyu and dxdyv regardless of value of
argument type, because they will be needed for subsequent calls to
tau2alpha with various values of argument type.

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 integer:: dayref = 1 ! jour de l'année de l'état initial
24 ! (= 350 si 20 décembre par exemple)
25
26 integer:: anneeref = 1998 ! Annee de l'etat initial (avec 4 chiffres)
27
28 logical:: raz_date = .false.
29 ! prise en compte de la date initiale de la namelist et remise à
30 ! zéro des compteurs de pas de temps (sinon on garde la date du
31 ! fichier restart)
32
33 integer:: periodav = 1
34 ! time interval between outputs in the dynamical part, in days
35
36 logical:: offline = .FALSE.
37 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
38
39 integer:: prt_level = 0 ! niveau d'impression souhaité (0 = minimum)
40
41 LOGICAL:: purmats= .FALSE.
42 ! Help = Choix du schema d'integration temporel.
43 ! y = pure Matsuno sinon c'est du Matsuno-leapfrog
44
45 logical:: ok_guide= .FALSE. ! guidage
46
47 INTEGER:: iflag_phys = 1
48 ! contrôle l'appel à la physique :
49 ! 0 : pas de physique
50 ! 1 : physique normale (appel à phylmd, phymars...) (default)
51 ! 2 : rappel Newtonien pour la température + friction au sol
52
53 contains
54
55 SUBROUTINE conf_gcm
56
57 ! Auteurs : L. Fairhead, P. Le Van
58 ! Version du 29/04/97
59
60 ! On ne compare pas les paramètres du zoom (grossismx, grossismy,
61 ! clon, clat) lus sur le fichier start avec ceux lus dans
62 ! une namelist, au début de gcm. Ces paramètres définissent entre
63 ! autres la grille et doivent être identiques, sinon il y aura
64 ! divergence du gcm.
65
66 use abort_gcm_m, only: abort_gcm
67 use comdissnew, only: read_comdissnew
68 use unit_nml_m, only: unit_nml
69
70 namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
71 iperiod, iapp_tracvl, iconser, iecri, periodav, iphysiq, offline
72
73 namelist /iniprint_nml/prt_level
74
75 namelist /logic_nml/ purmats, ok_guide, iflag_phys
76
77 !------------------------------------
78
79 print *, "Call sequence information: conf_gcm"
80
81 print *, "Enter namelist 'iniprint_nml'."
82 read(unit=*, nml=iniprint_nml)
83 write(unit_nml, nml=iniprint_nml)
84
85 print *, "Enter namelist 'logic_nml'."
86 read(unit=*, nml=logic_nml)
87 write(unit_nml, nml=logic_nml)
88
89 call read_comdissnew
90
91 print *, "Enter namelist 'conf_gcm_nml'."
92 read(unit=*, nml=conf_gcm_nml)
93 write(unit_nml, nml=conf_gcm_nml)
94
95 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
96 message = &
97 'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
98 ierr = 1)
99
100 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
101 message = &
102 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
103 ierr = 1)
104
105 if (ok_guide .and. mod(day_step, 4 * iperiod) /= 0) call &
106 abort_gcm(modname = "conf_gcm", &
107 message = 'ok_guide day_step iperiod', ierr = 1)
108
109 END SUBROUTINE conf_gcm
110
111 end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21