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

Contents of /trunk/Sources/phylmd/clesphys.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
File size: 3008 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 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
44 logical:: ok_instan = .false. ! sorties instantanees dans le fichier histins
45
46 save
47
48 contains
49
50 subroutine read_clesphys
51
52 use unit_nml_m, only: unit_nml
53
54 namelist /clesphys_nml/ solaire, co2_ppm, CH4_ppb, N2O_ppb, CFC11_ppt, &
55 CFC12_ppt, top_height, overlap, cdmmax, cdhmax, ksta, &
56 ksta_ter, ok_kzmin, lev_histhf, lev_histday, lev_histmth, &
57 type_run, ok_isccp, ok_regdyn, lonmin_ins, lonmax_ins, latmin_ins, &
58 latmax_ins, ecrit_ins, ok_instan
59
60 !---------------------------------------------------------
61
62 solaire = 1365. ! AMIP II
63 co2_ppm = 348. ! AMIP II
64 CH4_ppb = 1650.
65 N2O_ppb = 306.
66 CFC11_ppt = 280.
67 CFC12_ppt = 484.
68 top_height = 3
69 overlap = 3
70 cdmmax = 1.3E-3
71 cdhmax = 1.1E-3
72 ksta = 1.0e-10
73 ksta_ter = 1.0e-10
74 ok_kzmin = .true.
75 lev_histhf = 0
76 lev_histday = 1
77 lev_histmth = 2
78 type_run = 'AMIP'
79 ok_isccp = .false.
80 ok_regdyn = .false.
81 lonmin_ins = 100.
82 lonmax_ins = 130.
83 latmin_ins = -20.
84 latmax_ins = 20.
85 ecrit_ins = NINT(86400./48.)
86
87 print *, "Enter namelist 'clesphys_nml'."
88 read(unit=*, nml=clesphys_nml)
89 write(unit_nml, nml=clesphys_nml)
90
91 RCO2 = co2_ppm * 1.0e-06 * 44.011/28.97
92 RCH4 = CH4_ppb * 1.0E-09 * 16.043/28.97
93 RN2O = N2O_ppb * 1.0E-09 * 44.013/28.97
94 RCFC11=CFC11_ppt* 1.0E-12 * 137.3686/28.97
95 RCFC12 = CFC12_ppt * 1.0E-12 * 120.9140/28.97
96
97 print *, ' RCO2 = ', RCO2
98 print *, ' RCH4 = ', RCH4
99 print *, ' RN2O = ', RN2O
100 print *, ' RCFC11 = ', RCFC11
101 print *, ' RCFC12 = ', RCFC12
102
103 end subroutine read_clesphys
104
105 end module clesphys

  ViewVC Help
Powered by ViewVC 1.1.21