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

Contents of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 98 - (show annotations)
Tue May 13 17:23:16 2014 UTC (10 years ago) by guez
File size: 4077 byte(s)
Split inter_barxy.f : one procedure per module, one module per
file. Grouped the files into a directory.

Split orbite.f.

Value of raz_date read from the namelist is taken into account
(resetting the step counter) even if annee_ref == anneeref and day_ref
== dayref. raz_date is no longer modified by gcm main unit. (Following
LMDZ.)

Removed argument klon of interfsur_lim. Renamed arguments lmt_alb,
lmt_rug to alb_new, z0_new (same name as corresponding actual
arguments in interfsurf_hq).

Removed argument klon of interfsurf_hq.

Removed arguments qs and d_qs of diagetpq. Were always
zero. Downgraded arguments d_qw, d_ql of diagetpq to local variables,
they were not used in physiq. Removed all computations for solid water
in diagetpq, was just zero.


Downgraded arguments fs_bound, fq_bound of diagphy to local variables,
they were not used in physiq. Encapsulated in a test on iprt all
computations in diagphy.

Removed parameter nbtr of module dimphy. Replaced it everywhere in the
program by nqmx - 2.

Removed parameter rnpb of procedure physiq. Kept the true case in
physiq and phytrac. Could not work with false case anyway.

Removed arguments klon, llm, airephy of qcheck. Removed argument ftsol
of initrrnpb, was not used.

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 (grossismx < 1.) THEN
117 PRINT *, 'Error: grossismx < 1'
118 STOP 1
119 ELSE
120 alphax = 1. - 1. / grossismx
121 ENDIF
122 IF (grossismy < 1.) THEN
123 PRINT *, 'Error: grossismy < 1'
124 STOP 1
125 ELSE
126 alphay = 1. - 1. / grossismy
127 ENDIF
128 PRINT *, 'alphax = ', alphax
129 PRINT *, 'alphay = ', alphay
130
131 END SUBROUTINE conf_gcm
132
133 end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21