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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 173 - (show annotations)
Tue Oct 6 15:57:02 2015 UTC (8 years, 7 months ago) by guez
File size: 2928 byte(s)
correctbid did nothing. (Not used either in LMDZ since revision 1170.)

Avoid aliasing in arguments of nat2gcm: use a single set of arguments
with intent inout. Argument q of nat2gcm was not used.

pres2lev now accepts po in any monotonic order. So the input files for
nudging can now have the pressure coordinate in any order. Also, we
read the latitude coordinate from the input files for nudging and we
invert order if necessary so the input files for nudging can now have
the latitude coordinate in any order.

In pre2lev, no need for lmomx: use automatic arrays.

Removed variable ncep of module conf_guide_m. Instead, we find out
what the pressure coordinate is with find_coord.


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

  ViewVC Help
Powered by ViewVC 1.1.21