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

Annotation of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 113 - (hide annotations)
Thu Sep 18 19:56:46 2014 UTC (9 years, 8 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 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 3 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 guez 15 logical:: raz_date = .false.
29 guez 98 ! 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 guez 3
33 guez 56 integer:: periodav = 1
34     ! time interval between outputs in the dynamical part, in days
35 guez 3
36 guez 12 logical:: offline = .FALSE.
37 guez 33 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
38 guez 3
39 guez 57 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 guez 3 contains
54    
55 guez 13 SUBROUTINE conf_gcm
56 guez 3
57     ! Auteurs : L. Fairhead, P. Le Van
58     ! Version du 29/04/97
59    
60 guez 97 ! On ne compare pas les paramètres du zoom (grossismx, grossismy,
61 guez 113 ! clon, clat) lus sur le fichier start avec ceux lus dans
62 guez 97 ! 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 guez 3
66 guez 33 use abort_gcm_m, only: abort_gcm
67 guez 3 use comdissnew, only: read_comdissnew
68 guez 57 use unit_nml_m, only: unit_nml
69 guez 3
70     namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
71 guez 112 iperiod, iapp_tracvl, iconser, iecri, periodav, iphysiq, offline
72 guez 3
73 guez 57 namelist /iniprint_nml/prt_level
74    
75 guez 113 namelist /logic_nml/ purmats, ok_guide, iflag_phys
76 guez 57
77 guez 3 !------------------------------------
78    
79     print *, "Call sequence information: conf_gcm"
80 guez 12
81 guez 57 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 guez 12 call read_comdissnew
90 guez 3
91     print *, "Enter namelist 'conf_gcm_nml'."
92     read(unit=*, nml=conf_gcm_nml)
93 guez 57 write(unit_nml, nml=conf_gcm_nml)
94 guez 3
95 guez 40 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
96 guez 33 message = &
97     'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
98     ierr = 1)
99    
100 guez 69 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
101 guez 40 message = &
102 guez 33 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
103     ierr = 1)
104    
105 guez 102 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 guez 3 END SUBROUTINE conf_gcm
110    
111     end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21