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

Contents of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 102 - (show 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 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:: fxyhypb = .TRUE.
46 ! fonction f(y) à dérivée tangente hyperbolique, sinon à dérivée
47 ! sinusoïdale
48
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 contains
61
62 SUBROUTINE conf_gcm
63
64 ! Auteurs : L. Fairhead, P. Le Van
65 ! Version du 29/04/97
66
67 ! 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
73 use abort_gcm_m, only: abort_gcm
74 use comdissnew, only: read_comdissnew
75 use serre, only: clon, clat, grossismx, grossismy, alphax, alphay, &
76 dzoomx, dzoomy, taux, tauy
77 use unit_nml_m, only: unit_nml
78
79 namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
80 iperiod, iapp_tracvl, iconser, iecri, periodav, &
81 iphysiq, clon, clat, grossismx, grossismy, dzoomx, dzoomy, taux, &
82 tauy, offline
83
84 namelist /iniprint_nml/prt_level
85
86 namelist /logic_nml/ purmats, fxyhypb, ysinus, ok_guide, iflag_phys
87
88 !------------------------------------
89
90 print *, "Call sequence information: conf_gcm"
91
92 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 call read_comdissnew
101
102 print *, "Enter namelist 'conf_gcm_nml'."
103 read(unit=*, nml=conf_gcm_nml)
104 write(unit_nml, nml=conf_gcm_nml)
105
106 IF (MOD(day_step, iperiod) /= 0) call abort_gcm(modname = "conf_gcm", &
107 message = &
108 'Il faut choisir un nombre de pas par jour multiple de "iperiod".', &
109 ierr = 1)
110
111 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm(modname = "conf_gcm", &
112 message = &
113 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".', &
114 ierr = 1)
115
116 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 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