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

Contents of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 202 - (show annotations)
Wed Jun 8 12:23:41 2016 UTC (7 years, 11 months ago) by guez
Original Path: trunk/Sources/dyn3d/conf_gcm.f
File size: 2789 byte(s)
Promoted lmt_pas from local variable of physiq to variable of module
conf_gcm_m.

Removed variable run_off of module interface_surf. Was not
used. Called run_off_ter in LMDZ, but not used nor printed there
either.

Simplified logic in interfoce_lim. The way it was convoluted with
interfsurf_hq and clmain was quite a mess. Extracted reading of SST
into a separate procedure: read_sst. We do not need SST and pctsrf_new
at the same time: SST is not needed for sea-ice surface. I did not
like this programming: going through the procedure repeatedly for
different purposes and testing inside whether there was something to
do or it was already done. Reading is now only controlled by itap and
lmt_pas, instead of debut, jour, jour_lu and deja_lu. Now we do not
copy from pct_tmp to pctsrf_new every time step.

Simplified processing of pctsrf in clmain and below. It was quite
troubling: pctsrf_new was intent out in interfoce_lim but only defined
for ocean and sea-ice. Also the idea of having arrays for all
surfaces, pcsrf and pctsrf_new, in interfsurf_hq, which is called for
a particular surface, was troubling. pctsrf_new for all surfaces was
intent out in intefsurf_hq, but not defined for all surfaces at each
call. Removed argument pctsrf_new of clmain: was a duplicate of pctsrf
on output, and not used in physiq. Replaced pctsrf_new in clmain by
pctsrf_new_oce and pctsrf_new_sic, which were the only ones modified.

1 module conf_gcm_m
2
3 IMPLICIT NONE
4
5 INTEGER:: nday = 10 ! nombre de jours d'int\'egration
6 integer:: day_step = 240 ! nombre de pas de temps de la dynamique par jour
7 integer:: iperiod = 5 ! periode pour le pas Matsuno (en pas de temps)
8
9 integer:: iapp_tracvl = 5
10 ! Should normally be equal to "iperiod"
11 ! frequence du groupement des flux (en pas de temps)
12
13 integer:: iconser = 240
14 ! number of time steps between output of control variables
15
16 integer:: iecri = 1 ! time interval between outputs to "dyn_hist.nc" (in days)
17
18 integer:: iphysiq = 5
19 ! number of time steps of dynamics between calls to physics
20
21 logical:: raz_date = .false.
22 ! prise en compte de la date initiale de la namelist et remise \`a
23 ! z\'ero des compteurs de pas de temps (sinon on garde la date du
24 ! fichier restart)
25
26 integer:: periodav = 1
27 ! time interval between outputs in the dynamical part, in days
28
29 logical:: offline = .FALSE.
30 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
31
32 integer:: prt_level = 0 ! niveau d'impression souhait\'e (0 = minimum)
33
34 LOGICAL:: purmats= .FALSE.
35 ! Help = Choix du schema d'integration temporel.
36 ! y = pure Matsuno sinon c'est du Matsuno-leapfrog
37
38 INTEGER:: iflag_phys = 1
39 ! contr\^ole l'appel \`a la physique :
40 ! 0 : pas de physique
41 ! 1 : physique normale (appel \`a phylmd, phymars...) (default)
42 ! 2 : rappel Newtonien pour la temp\'erature + friction au sol
43
44 INTEGER, SAVE:: lmt_pas ! number of time steps of "physics" per day
45
46 contains
47
48 SUBROUTINE conf_gcm
49
50 ! Auteurs : L. Fairhead, P. Le Van
51 ! Version du 29/04/97
52
53 use abort_gcm_m, only: abort_gcm
54 use unit_nml_m, only: unit_nml
55
56 namelist /conf_gcm_nml/ raz_date, nday, day_step, iperiod, iapp_tracvl, &
57 iconser, iecri, periodav, iphysiq, offline
58
59 namelist /iniprint_nml/ prt_level
60
61 namelist /logic_nml/ purmats, iflag_phys
62
63 !------------------------------------
64
65 print *, "Call sequence information: conf_gcm"
66
67 print *, "Enter namelist 'iniprint_nml'."
68 read(unit=*, nml=iniprint_nml)
69 write(unit_nml, nml=iniprint_nml)
70
71 print *, "Enter namelist 'logic_nml'."
72 read(unit=*, nml=logic_nml)
73 write(unit_nml, nml=logic_nml)
74
75 print *, "Enter namelist 'conf_gcm_nml'."
76 read(unit=*, nml=conf_gcm_nml)
77 write(unit_nml, nml=conf_gcm_nml)
78
79 IF (MOD(day_step, iperiod) /= 0) call abort_gcm("conf_gcm", &
80 'Il faut choisir un nombre de pas par jour multiple de "iperiod".')
81
82 IF (MOD(day_step, iphysiq)/= 0) call abort_gcm("conf_gcm", &
83 'Il faut choisir un nombre de pas par jour multiple de "iphysiq".')
84
85 lmt_pas = day_step / iphysiq
86 print *, 'Number of time steps of "physics" per day: ', lmt_pas
87
88 END SUBROUTINE conf_gcm
89
90 end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21