/[lmdze]/trunk/Sources/dyn3d/Guide/conf_guide.f
ViewVC logotype

Annotation of /trunk/Sources/dyn3d/Guide/conf_guide.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 139 - (hide annotations)
Tue May 26 17:46:03 2015 UTC (8 years, 11 months ago) by guez
File size: 2838 byte(s)
dynetat0 read rlonu, rlatu, rlonv, rlatv, cu_2d, cv_2d, aire_2d from
"start.nc" and then these variables were overwritten by
inigeom. Corrected this. Now, inigeom does not compute rlonu, rlatu,
rlonv and rlatv. Moreover, cu_2d, cv_2d, aire_2d are not written to
"restart.nc". Since xprimu, xprimv, xprimm025, xprimp025, rlatu1,
rlatu2, yprimu1, yprimu2 are computed at the same time as rlonu,
rlatu, rlonv, rlatv, and since it would not be convenient to separate
those computations, we decide to write xprimu, xprimv, xprimm025,
xprimp025, rlatu1, rlatu2, yprimu1, yprimu2 into "restart.nc", read
them from "start.nc" and not compute them in inigeom. So, in summary,
"start.nc" contains all the coordinates and their derivatives, and
inigeom only computes the 2D-variables.

Technical details:

Moved variables rlatu, rlonv, rlonu, rlatv, xprimu, xprimv from module
comgeom to module dynetat0_m. Upgraded local variables rlatu1,
yprimu1, rlatu2, yprimu2, xprimm025, xprimp025 of procedure inigeom to
variables of module dynetat0_m.

Removed unused local variable yprimu of procedure inigeom and
corresponding argument yyprimu of fyhyp.

Moved variables clat, clon, grossismx, grossismy, dzoomx, dzoomy,
taux, tauy from module serre to module dynetat0_m (since they are read
from "start.nc"). The default values are now defined in read_serre
instead of in the declarations. Changed name of module serre to
read_serre_m, no more module variable here.

The calls to fxhyp and fyhyp are moved from inigeom to etat0.

Side effects in programs other than gcm: etat0 and read_serre write
variables of module dynetat0; the programs test_fxyp and
test_inter_barxy need more source files.

Removed unused arguments len and nd of cv3_tracer. Removed unused
argument PPSOL of LWU.

Bug fix in test_inter_barxy: forgotten call to read_serre.

1 guez 44 module conf_guide_m
2 guez 37
3 guez 44 IMPLICIT NONE
4 guez 3
5 guez 115 ! Constantes de rappel, en jours :
6     REAL:: tau_min_u = 0.03
7 guez 83 REAL:: tau_max_u = 10.
8 guez 115 REAL:: tau_min_v = 0.03
9 guez 83 REAL:: tau_max_v = 10.
10 guez 115 REAL:: tau_min_t = 0.03
11 guez 83 REAL:: tau_max_t = 10.
12 guez 115 REAL:: tau_min_q = 0.03
13 guez 83 REAL:: tau_max_q = 10.
14 guez 115 REAL:: tau_min_p = 0.03
15 guez 83 REAL:: tau_max_p = 10.
16 guez 3
17 guez 83 LOGICAL:: ncep = .false. ! Coordonnee vert NCEP ou ECMWF
18     LOGICAL:: ini_anal = .false. ! Initial = analyse
19 guez 115 LOGICAL:: guide_u = .false. ! guidage de u
20     LOGICAL:: guide_v = .false. ! gvidage de v
21 guez 107 LOGICAL:: guide_t = .false. ! guidage de T
22     LOGICAL:: guide_q = .false. ! guidage de q
23 guez 83
24 guez 102 logical:: online = .true. ! controle du guide
25     ! hors-ligne: x=x_rea
26    
27 guez 83 ! Latitude min et max pour le rappel dans le cas ou on 'a les
28     ! analyses que sur une bande de latitudes.
29     REAL:: lat_min_guide = -90. ! Latitude minimum pour le guidage
30     real:: lat_max_guide = 90. ! Latitude maximum pour le guidage
31    
32 guez 115 logical, save:: ok_guide ! guidage
33     REAL, save:: factt ! pas de temps entre deux appels au guidage, en jours
34    
35 guez 44 contains
36 guez 3
37 guez 44 SUBROUTINE conf_guide
38 guez 3
39 guez 44 ! From LMDZ4/libf/dyn3d/conf_guide.F, version 1.1.1.1 2004/05/19 12:53:07
40     ! Parametres de controle du run:
41 guez 3
42 guez 115 use abort_gcm_m, only: abort_gcm
43     use comconst, only: daysec, dtvr
44     use conf_gcm_m, only: day_step, iperiod
45 guez 139 use dynetat0_m, only: grossismx, grossismy
46 guez 115 use nr_util, only: assert
47 guez 83 use unit_nml_m, only: unit_nml
48 guez 3
49 guez 83 namelist /conf_guide_nml/ ncep, ini_anal, guide_u, guide_v, guide_t, &
50 guez 115 guide_q, online, tau_min_u, tau_max_u, tau_min_v, tau_max_v, &
51     tau_min_t, tau_max_t, tau_min_q, tau_max_q, tau_min_p, tau_max_p, &
52 guez 83 lat_min_guide, lat_max_guide
53    
54 guez 44 !-----------------------------------------------------------------------
55 guez 3
56 guez 44 print *, "Call sequence information: conf_guide"
57 guez 3
58 guez 83 print *, "Enter namelist 'conf_guide_nml'."
59     read(unit=*, nml=conf_guide_nml)
60     write(unit_nml, nml=conf_guide_nml)
61 guez 3
62 guez 115 ok_guide = any((/guide_u, guide_v, guide_t, guide_q/))
63     if (ok_guide .and. mod(day_step, 4 * iperiod) /= 0) call &
64     abort_gcm(modname = "conf_guide", &
65     message = 'ok_guide day_step iperiod', ierr = 1)
66    
67     if (ok_guide .and. online) then
68     factt = dtvr * iperiod / daysec
69     print *, "factt = ", factt
70     if (abs(grossismx - 1.) >= 0.1 .and. abs(grossismy - 1.) >= 0.1) then
71     if (guide_u) call assert(factt / tau_min_u < 1, &
72     "conf_guide tau_min_u")
73     if (guide_v) call assert(factt / tau_min_v < 1, &
74     "conf_guide tau_min_v")
75     if (guide_t) call assert(factt / tau_min_t < 1, &
76     "conf_guide tau_min_t")
77     if (guide_q) call assert(factt / tau_min_q < 1, &
78     "conf_guide tau_min_q")
79     end if
80     end if
81    
82 guez 44 end SUBROUTINE conf_guide
83    
84     end module conf_guide_m

  ViewVC Help
Powered by ViewVC 1.1.21