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

Annotation of /trunk/Sources/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 98 - (hide annotations)
Tue May 13 17:23:16 2014 UTC (10 years ago) by guez
Original Path: trunk/dyn3d/conf_gcm.f
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 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 3 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