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

Annotation of /trunk/Sources/dyn3d/conf_gcm.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12 - (hide annotations)
Mon Jul 21 16:05:07 2008 UTC (15 years, 10 months ago) by guez
Original Path: trunk/libf/dyn3d/conf_gcm.f90
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 guez 3 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 guez 12 logical:: offline = .FALSE.
45     ! Nouvelle eau liquide
46     ! Permet de mettre en route la nouvelle parametrisation de l'eau liquide
47 guez 3
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 guez 12 use logic, only: read_logic
66 guez 3 use serre, only: clon, clat, grossismx, grossismy, alphax, alphay, &
67     dzoomx, dzoomy, taux, tauy
68 guez 12 use clesphys2, only: ok_limitvrai, ok_orolf, iflag_con, nbapp_rad, &
69 guez 3 ok_orodr, cycle_diurne, new_oliq, soil_model
70 guez 12 use iniprint, only: read_iniprint
71 guez 3
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 guez 12 iperiod, iapp_tracvl, iconser, iecri, periodav, idissip, &
78     iphysiq, cycle_diurne, soil_model, new_oliq, &
79 guez 3 ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad, iflag_con, clon, clat, &
80 guez 12 grossismx, grossismy, dzoomx, dzoomy, taux, tauy, offline
81 guez 3
82     !------------------------------------
83    
84     print *, "Call sequence information: conf_gcm"
85 guez 12
86 guez 3 call read_iniprint
87 guez 12 call read_logic
88     call read_comdissnew
89 guez 3
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