/[lmdze]/trunk/libf/dyn3d/conf_gcm.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/conf_gcm.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (show annotations)
Mon Jul 21 16:05:07 2008 UTC (15 years, 9 months ago) by guez
File size: 3809 byte(s)
-- Minor modification of input/output:

Created procedure "read_logic". Variables of module "logic" are read
by "read_logic" instead of "conf_gcm". Variable "offline" of module
"conf_gcm" is read from namelist instead of "*.def".

Deleted arguments "dtime", "co2_ppm_etat0", "solaire_etat0",
"tabcntr0" and local variables "radpas", "tab_cntrl" of
"phyetat0". "phyetat0" does not read "controle" in "startphy.nc" any
longer. "phyetat0" now reads global attribute "itau_phy" from
"startphy.nc". "phyredem" does not create variable "controle" in
"startphy.nc" any longer. "phyredem" now writes global attribute
"itau_phy" of "startphy.nc". Deleted argument "tabcntr0" of
"printflag". Removed diagnostic messages written by "printflag" for
comparison of the variable "controle" of "startphy.nc" and the
variables read from "*.def" or namelist input.

-- Removing unwanted functionality:

Removed variable "lunout" from module "iniprint", replaced everywhere
by standard output.

Removed case "ocean == 'couple'" in "clmain", "interfsurf_hq" and
"physiq". Removed procedure "interfoce_cpl".

-- Should not change anything at run time:

Automated creation of graphs in documentation. More documentation on
input files.

Converted Fortran files to free format: "phyredem.f90", "printflag.f90".

Split module "clesphy" into "clesphys" and "clesphys2".

Removed variables "conser", "leapf", "forward", "apphys", "apdiss" and
"statcl" from module "logic". Added arguments "conser" to "advect",
"leapf" to "integrd". Added local variables "forward", "leapf",
"apphys", "conser", "apdiss" in "leapfrog".

Added intent attributes.

Deleted arguments "dtime" of "phyredem", "pdtime" of "flxdtdq", "sh"
of "phytrac", "dt" of "yamada".

Deleted local variables "dtime", "co2_ppm_etat0", "solaire_etat0",
"length", "tabcntr0" in "physiq". Replaced all references to "dtime"
by references to "pdtphys".

1 module conf_gcm_m
2
3 ! This module is clean: no C preprocessor directive, no include line
4
5 IMPLICIT NONE
6
7 INTEGER:: nday= 10
8 ! Nombre de jours d'integration
9 ! On pourait aussi permettre des mois ou des annees !
10
11 integer:: day_step= 240 ! nombre de pas par jour, multiple de iperiod
12
13 integer:: iperiod= 5
14 ! periode pour le pas Matsuno (en pas de temps)
15
16 integer:: iapp_tracvl= 5
17 ! Should normally be equal to "iperiod"
18 ! frequence du groupement des flux (en pas de temps)
19
20 integer:: iconser= 240
21 ! periode de sortie des variables de controle
22 ! (En pas de temps)
23
24 integer:: iecri= 1 ! période d'écriture du fichier "dyn_hist.nc" (en jours)
25
26 integer:: idissip= 10 ! periode de la dissipation (en pas)
27
28 integer:: iphysiq= 5
29 ! Help = Periode de la physique en pas de temps de la dynamique.
30
31 integer:: dayref = 1 ! jour de l'année de l'état initial
32 ! (= 350 si 20 décembre par exemple)
33
34 integer:: anneeref = 1998 ! Annee de l'etat initial (avec 4 chiffres)
35
36 integer:: raz_date = 0 ! Remise a zero de la date initiale
37 ! 0 pas de remise a zero, on garde la date du fichier restart
38 ! 1 prise en compte de la date de gcm.def avec remise a zero
39 ! des compteurs de pas de temps
40
41 REAL:: periodav= 1.
42 ! periode de stockage fichier histmoy (en jour)
43
44 logical:: offline = .FALSE.
45 ! Nouvelle eau liquide
46 ! Permet de mettre en route la nouvelle parametrisation de l'eau liquide
47
48 contains
49
50 SUBROUTINE conf_gcm(clesphy0)
51
52 ! Auteurs : L. Fairhead, P. Le Van
53 ! Version du 29/04/97
54
55 ! Nouveaux paramètres nitergdiv, nitergrot, niterh, tetagdiv, tetagrot,
56 ! tetatemp ajoutés pour la dissipation.
57
58 ! On ne compare pas les valeurs des paramètres du zoom, grossismx,
59 ! grossismy, clon, clat, fxyhypb lues sur le fichier start avec
60 ! celles passées par run.def, au début du gcm.
61 ! Ces paramètres définissent entre autres la grille et doivent être
62 ! cohérents, sinon il y aura divergence du gcm.
63
64 use comdissnew, only: read_comdissnew
65 use logic, only: read_logic
66 use serre, only: clon, clat, grossismx, grossismy, alphax, alphay, &
67 dzoomx, dzoomy, taux, tauy
68 use clesphys2, only: ok_limitvrai, ok_orolf, iflag_con, nbapp_rad, &
69 ok_orodr, cycle_diurne, new_oliq, soil_model
70 use iniprint, only: read_iniprint
71
72 INTEGER, PARAMETER:: longcles = 20
73
74 REAL, intent(out), optional:: clesphy0(longcles)
75
76 namelist /conf_gcm_nml/dayref, anneeref, raz_date, nday, day_step, &
77 iperiod, iapp_tracvl, iconser, iecri, periodav, idissip, &
78 iphysiq, cycle_diurne, soil_model, new_oliq, &
79 ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad, iflag_con, clon, clat, &
80 grossismx, grossismy, dzoomx, dzoomy, taux, tauy, offline
81
82 !------------------------------------
83
84 print *, "Call sequence information: conf_gcm"
85
86 call read_iniprint
87 call read_logic
88 call read_comdissnew
89
90 print *, "Enter namelist 'conf_gcm_nml'."
91 read(unit=*, nml=conf_gcm_nml)
92 write(unit=*, nml=conf_gcm_nml)
93
94 if (present(clesphy0)) then
95 clesphy0(:) = 0.
96 clesphy0(1) = REAL(iflag_con)
97 clesphy0(2) = REAL(nbapp_rad)
98
99 IF (cycle_diurne) clesphy0(3) = 1.
100 IF (soil_model) clesphy0(4) = 1.
101 IF (new_oliq) clesphy0(5) = 1.
102 IF (ok_orodr) clesphy0(6) = 1.
103 IF (ok_orolf) clesphy0(7) = 1.
104 IF (ok_limitvrai) clesphy0(8) = 1.
105 end if
106
107 IF (grossismx < 1.) THEN
108 PRINT *, 'Error: grossismx < 1'
109 STOP 1
110 ELSE
111 alphax = 1. - 1. / grossismx
112 ENDIF
113 IF (grossismy < 1.) THEN
114 PRINT *, 'Error: grossismy < 1'
115 STOP 1
116 ELSE
117 alphay = 1. - 1. / grossismy
118 ENDIF
119 PRINT *, 'alphax = ', alphax
120 PRINT *, 'alphay = ', alphay
121
122 END SUBROUTINE conf_gcm
123
124 end module conf_gcm_m

  ViewVC Help
Powered by ViewVC 1.1.21