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

Annotation of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 102 - (hide annotations)
Tue Jul 15 13:43:24 2014 UTC (9 years, 10 months ago) by guez
File size: 4242 byte(s)
Removed unused file "condsurf.f" (only useful for ocean slab).

day_step must be a multiple of 4 * iperiod if ok_guide.

Changed type of variable online of module conf_guide_m from integer to
logical. Value -1 was not useful, equivalent to not ok_guide.

Removed argument masse of procedure guide. masse is kept consistent
with ps throughout the run. masse need only be computed again just
after ps has been modified. In prodecure guide, replaced use of
remanent variable first by test on itau. Replaced test on variable
"test" by test on integer values.

In leapfrog, for the call to guide, replaced test on real values by
test on integer values.

Bug fix in tau2alpha: computation of dxdyv (following LMDZ revision 1040).

In procedure wrgrads, replaced badly chosen argument name "if" by i_f.

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:: fxyhypb = .TRUE.
46 guez 97 ! fonction f(y) à dérivée tangente hyperbolique, sinon à dérivée
47     ! sinusoïdale
48 guez 57
49     logical:: ysinus = .TRUE.
50     ! (Fonction f(y) avec y = Sin(latit.) si = .true. sinon y = latit.)
51    
52     logical:: ok_guide= .FALSE. ! guidage
53    
54     INTEGER:: iflag_phys = 1
55     ! contrôle l'appel à la physique :
56     ! 0 : pas de physique
57     ! 1 : physique normale (appel à phylmd, phymars...) (default)
58     ! 2 : rappel Newtonien pour la température + friction au sol
59    
60 guez 3 contains
61    
62 guez 13 SUBROUTINE conf_gcm
63 guez 3
64     ! Auteurs : L. Fairhead, P. Le Van
65     ! Version du 29/04/97
66    
67 guez 97 ! On ne compare pas les paramètres du zoom (grossismx, grossismy,
68     ! clon, clat, fxyhypb) lus sur le fichier start avec ceux lus dans
69     ! une namelist, au début de gcm. Ces paramètres définissent entre
70     ! autres la grille et doivent être identiques, sinon il y aura
71     ! divergence du gcm.
72 guez 3
73 guez 33 use abort_gcm_m, only: abort_gcm
74 guez 3 use comdissnew, only: read_comdissnew
75     use serre, only: clon, clat, grossismx, grossismy, alphax, alphay, &
76     dzoomx, dzoomy, taux, tauy
77 guez 57 use unit_nml_m, only: unit_nml
78 guez 3
79     namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
80 guez 26 iperiod, iapp_tracvl, iconser, iecri, periodav, &
81 guez 13 iphysiq, clon, clat, grossismx, grossismy, dzoomx, dzoomy, taux, &
82     tauy, offline
83 guez 3
84 guez 57 namelist /iniprint_nml/prt_level
85    
86     namelist /logic_nml/ purmats, fxyhypb, ysinus, ok_guide, iflag_phys
87    
88 guez 3 !------------------------------------
89    
90     print *, "Call sequence information: conf_gcm"
91 guez 12
92 guez 57 print *, "Enter namelist 'iniprint_nml'."
93     read(unit=*, nml=iniprint_nml)
94     write(unit_nml, nml=iniprint_nml)
95    
96     print *, "Enter namelist 'logic_nml'."
97     read(unit=*, nml=logic_nml)
98     write(unit_nml, nml=logic_nml)
99    
100 guez 12 call read_comdissnew
101 guez 3
102     print *, "Enter namelist 'conf_gcm_nml'."
103     read(unit=*, nml=conf_gcm_nml)
104 guez 57 write(unit_nml, nml=conf_gcm_nml)
105 guez 3
106 guez 40 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
107 guez 33 message = &
108     'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
109     ierr = 1)
110    
111 guez 69 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
112 guez 40 message = &
113 guez 33 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
114     ierr = 1)
115    
116 guez 102 if (ok_guide .and. mod(day_step, 4 * iperiod) /= 0) call &
117     abort_gcm(modname = "conf_gcm", &
118     message = 'ok_guide day_step iperiod', ierr = 1)
119    
120 guez 3 IF (grossismx < 1.) THEN
121     PRINT *, 'Error: grossismx < 1'
122     STOP 1
123     ELSE
124     alphax = 1. - 1. / grossismx
125     ENDIF
126     IF (grossismy < 1.) THEN
127     PRINT *, 'Error: grossismy < 1'
128     STOP 1
129     ELSE
130     alphay = 1. - 1. / grossismy
131     ENDIF
132     PRINT *, 'alphax = ', alphax
133     PRINT *, 'alphay = ', alphay
134    
135     END SUBROUTINE conf_gcm
136    
137     end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21