/[lmdze]/trunk/Sources/phylmd/clesphys.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/clesphys.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 191 - (show annotations)
Mon May 9 19:56:28 2016 UTC (8 years ago) by guez
File size: 3391 byte(s)
Extracted the call to read_comdissnew out of conf_gcm.

Made ok_instan a variable of module clesphys, itau_phy a variable of
module phyetat0_m, nid_ins a variable of module ini_histins_m, itap a
variable of new module time_phylmdz, so that histwrite_phy can be
called from any procedure without the need to cascade those variables
into that procedure. Made itau_w a variable of module time_phylmdz so
that it is computed only once per time step of physics.

Extracted variables of module clesphys which were in namelist
conf_phys_nml into their own namelist, clesphys_nml, and created
procedure read_clesphys reading clesphys_nml, to avoid side effect.

No need for double precision in procedure getso4fromfile. Assume there
is a single variable for the whole year in the NetCDF file instead of
one variable per month.

Created generic procedure histwrite_phy and removed procedure
write_histins, following LMDZ. histwrite_phy has only two arguments,
can be called from anywhere, and should manage the logic of writing or
not writing into various history files with various operations. So the
test on ok_instan goes inside histwrite_phy.

Test for raz_date in phyetat0 instead of physiq to avoid side effect.

Created procedure increment_itap to avoid side effect.

Removed unnecessary differences between procedures readsulfate and
readsulfate_pi.

1 module clesphys
2
3 ! From version 1.3 2005/06/06 13:16:33
4
5 implicit none
6
7 REAL co2_ppm ! concentration du gaz carbonique en ppmv
8 real solaire ! Constante solaire en W/m2
9 double precision RCO2 ! Concentration du CO2
10 double precision RCH4 ! Concentration du CH4
11 double precision RN2O ! Concentration du N2O
12 double precision RCFC11 ! Concentration du CFC11
13 double precision RCFC12 ! Concentration du CFC12
14 double precision CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt
15
16 ! Simulateur ISCCP:
17 INTEGER top_height
18 INTEGER overlap ! 1, 2 or 3
19
20 REAL cdmmax, cdhmax ! seuils cdrm, cdrh
21 REAL ksta, ksta_ter ! paramètres stabilité sur terres et en dehors
22 LOGICAL ok_kzmin ! calcul Kzmin dans la couche limite de surface
23
24 INTEGER lev_histhf ! niveau sorties 6h
25 ! 4: histhf3d.nc champs 3d niveaux modele
26
27 integer lev_histday ! niveau sorties journalieres
28 ! 3: champs 3D => F. Lott
29 ! 4: + champs sous-surfaces
30
31 integer lev_histmth ! niveau sorties mensuelles
32 ! 3: albedo, rugosite sous-surfaces
33 ! 4: champs tendances 3d
34
35 CHARACTER(len=4) type_run ! 'AMIP' ou 'ENSP'
36 LOGICAL ok_isccp, ok_regdyn
37
38 REAL lonmin_ins, lonmax_ins, latmin_ins, latmax_ins
39 ! longitude et latitude minimales et maximales pour la zone avec
40 ! sorties instantanées tous les pas de temps de la physique,
41 ! fichier "histbilKP_ins.nc"
42
43 INTEGER ecrit_ins, ecrit_hf, ecrit_hf2mth, ecrit_day
44 INTEGER ecrit_mth, ecrit_tra, ecrit_reg
45 logical:: ok_instan = .false. ! sorties instantanees dans le fichier histins
46
47 save
48
49 contains
50
51 subroutine read_clesphys
52
53 use unit_nml_m, only: unit_nml
54
55 namelist /clesphys_nml/ solaire, co2_ppm, CH4_ppb, N2O_ppb, CFC11_ppt, &
56 CFC12_ppt, top_height, overlap, cdmmax, cdhmax, ksta, &
57 ksta_ter, ok_kzmin, lev_histhf, lev_histday, lev_histmth, &
58 type_run, ok_isccp, ok_regdyn, lonmin_ins, lonmax_ins, latmin_ins, &
59 latmax_ins, ecrit_ins, ecrit_hf, ecrit_hf2mth, ecrit_day, ecrit_mth, &
60 ecrit_tra, ecrit_reg, ok_instan
61
62 !---------------------------------------------------------
63
64 solaire = 1365. ! AMIP II
65 co2_ppm = 348. ! AMIP II
66 CH4_ppb = 1650.
67 N2O_ppb = 306.
68 CFC11_ppt = 280.
69 CFC12_ppt = 484.
70 top_height = 3
71 overlap = 3
72 cdmmax = 1.3E-3
73 cdhmax = 1.1E-3
74 ksta = 1.0e-10
75 ksta_ter = 1.0e-10
76 ok_kzmin = .true.
77 lev_histhf = 0
78 lev_histday = 1
79 lev_histmth = 2
80 type_run = 'AMIP'
81 ok_isccp = .false.
82 ok_regdyn = .false.
83 lonmin_ins = 100.
84 lonmax_ins = 130.
85 latmin_ins = -20.
86 latmax_ins = 20.
87 ecrit_ins = NINT(86400./48.)
88 ecrit_hf = NINT(86400. *0.25)
89 ecrit_hf2mth = 4*30 ! ecriture mens. a partir de val. inst. toutes les 6h
90 ecrit_day = 86400
91 ecrit_mth = 86400
92 ecrit_tra = 1
93 ecrit_reg = NINT(86400. *0.25) ! 4 fois par jour
94
95 print *, "Enter namelist 'clesphys_nml'."
96 read(unit=*, nml=clesphys_nml)
97 write(unit_nml, nml=clesphys_nml)
98
99 RCO2 = co2_ppm * 1.0e-06 * 44.011/28.97
100 RCH4 = CH4_ppb * 1.0E-09 * 16.043/28.97
101 RN2O = N2O_ppb * 1.0E-09 * 44.013/28.97
102 RCFC11=CFC11_ppt* 1.0E-12 * 137.3686/28.97
103 RCFC12 = CFC12_ppt * 1.0E-12 * 120.9140/28.97
104
105 print *, ' RCO2 = ', RCO2
106 print *, ' RCH4 = ', RCH4
107 print *, ' RN2O = ', RN2O
108 print *, ' RCFC11 = ', RCFC11
109 print *, ' RCFC12 = ', RCFC12
110
111 end subroutine read_clesphys
112
113 end module clesphys

  ViewVC Help
Powered by ViewVC 1.1.21