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

Annotation of /trunk/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 202 - (hide 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 guez 3 module conf_gcm_m
2    
3     IMPLICIT NONE
4    
5 guez 154 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 guez 3
9 guez 39 integer:: iapp_tracvl = 5
10 guez 3 ! Should normally be equal to "iperiod"
11     ! frequence du groupement des flux (en pas de temps)
12    
13 guez 39 integer:: iconser = 240
14     ! number of time steps between output of control variables
15 guez 3
16 guez 39 integer:: iecri = 1 ! time interval between outputs to "dyn_hist.nc" (in days)
17 guez 3
18 guez 40 integer:: iphysiq = 5
19     ! number of time steps of dynamics between calls to physics
20    
21 guez 15 logical:: raz_date = .false.
22 guez 154 ! 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 guez 98 ! fichier restart)
25 guez 3
26 guez 56 integer:: periodav = 1
27     ! time interval between outputs in the dynamical part, in days
28 guez 3
29 guez 12 logical:: offline = .FALSE.
30 guez 33 ! permet de mettre en route la nouvelle parametrisation de l'eau liquide
31 guez 3
32 guez 154 integer:: prt_level = 0 ! niveau d'impression souhait\'e (0 = minimum)
33 guez 57
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 guez 154 ! contr\^ole l'appel \`a la physique :
40 guez 57 ! 0 : pas de physique
41 guez 154 ! 1 : physique normale (appel \`a phylmd, phymars...) (default)
42     ! 2 : rappel Newtonien pour la temp\'erature + friction au sol
43 guez 57
44 guez 202 INTEGER, SAVE:: lmt_pas ! number of time steps of "physics" per day
45    
46 guez 3 contains
47    
48 guez 13 SUBROUTINE conf_gcm
49 guez 3
50     ! Auteurs : L. Fairhead, P. Le Van
51     ! Version du 29/04/97
52    
53 guez 33 use abort_gcm_m, only: abort_gcm
54 guez 57 use unit_nml_m, only: unit_nml
55 guez 3
56 guez 129 namelist /conf_gcm_nml/ raz_date, nday, day_step, iperiod, iapp_tracvl, &
57     iconser, iecri, periodav, iphysiq, offline
58 guez 3
59 guez 129 namelist /iniprint_nml/ prt_level
60 guez 57
61 guez 115 namelist /logic_nml/ purmats, iflag_phys
62 guez 57
63 guez 3 !------------------------------------
64    
65     print *, "Call sequence information: conf_gcm"
66 guez 12
67 guez 57 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 guez 3 print *, "Enter namelist 'conf_gcm_nml'."
76     read(unit=*, nml=conf_gcm_nml)
77 guez 57 write(unit_nml, nml=conf_gcm_nml)
78 guez 3
79 guez 171 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 guez 33
82 guez 171 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 guez 33
85 guez 202 lmt_pas = day_step / iphysiq
86     print *, 'Number of time steps of "physics" per day: ', lmt_pas
87    
88 guez 3 END SUBROUTINE conf_gcm
89    
90     end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21