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

Annotation of /trunk/phylmd/clesphys.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 191 - (hide annotations)
Mon May 9 19:56:28 2016 UTC (8 years ago) by guez
Original Path: trunk/Sources/phylmd/clesphys.f
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 guez 3 module clesphys
2    
3 guez 51 ! From version 1.3 2005/06/06 13:16:33
4 guez 3
5     implicit none
6    
7 guez 68 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 guez 3 double precision CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt
15 guez 68
16     ! Simulateur ISCCP:
17     INTEGER top_height
18     INTEGER overlap ! 1, 2 or 3
19    
20 guez 51 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 guez 68
24 guez 3 INTEGER lev_histhf ! niveau sorties 6h
25 guez 68 ! 4: histhf3d.nc champs 3d niveaux modele
26    
27 guez 3 integer lev_histday ! niveau sorties journalieres
28 guez 68 ! 3: champs 3D => F. Lott
29     ! 4: + champs sous-surfaces
30    
31 guez 3 integer lev_histmth ! niveau sorties mensuelles
32 guez 68 ! 3: albedo, rugosite sous-surfaces
33     ! 4: champs tendances 3d
34    
35     CHARACTER(len=4) type_run ! 'AMIP' ou 'ENSP'
36 guez 3 LOGICAL ok_isccp, ok_regdyn
37 guez 68
38 guez 3 REAL lonmin_ins, lonmax_ins, latmin_ins, latmax_ins
39 guez 68 ! 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 guez 3 INTEGER ecrit_ins, ecrit_hf, ecrit_hf2mth, ecrit_day
44     INTEGER ecrit_mth, ecrit_tra, ecrit_reg
45 guez 191 logical:: ok_instan = .false. ! sorties instantanees dans le fichier histins
46 guez 3
47     save
48    
49 guez 191 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 guez 3 end module clesphys

  ViewVC Help
Powered by ViewVC 1.1.21