/[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 173 - (hide annotations)
Tue Oct 6 15:57:02 2015 UTC (8 years, 8 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 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:: ini_anal = .false. ! Initial = analyse
18 guez 115 LOGICAL:: guide_u = .false. ! guidage de u
19     LOGICAL:: guide_v = .false. ! gvidage de v
20 guez 107 LOGICAL:: guide_t = .false. ! guidage de T
21     LOGICAL:: guide_q = .false. ! guidage de q
22 guez 83
23 guez 102 logical:: online = .true. ! controle du guide
24     ! hors-ligne: x=x_rea
25    
26 guez 140 ! 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 guez 83
30 guez 115 logical, save:: ok_guide ! guidage
31     REAL, save:: factt ! pas de temps entre deux appels au guidage, en jours
32    
33 guez 44 contains
34 guez 3
35 guez 44 SUBROUTINE conf_guide
36 guez 3
37 guez 44 ! 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 guez 3
40 guez 115 use abort_gcm_m, only: abort_gcm
41     use comconst, only: daysec, dtvr
42     use conf_gcm_m, only: day_step, iperiod
43 guez 139 use dynetat0_m, only: grossismx, grossismy
44 guez 140 use nr_util, only: assert, pi
45 guez 83 use unit_nml_m, only: unit_nml
46 guez 3
47 guez 140 ! Local:
48    
49     REAL:: lat_min_guide_deg = -90. ! in degrees
50     real:: lat_max_guide_deg = 90. ! in degrees
51    
52 guez 173 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 guez 140 lat_min_guide_deg, lat_max_guide_deg
56 guez 83
57 guez 44 !-----------------------------------------------------------------------
58 guez 3
59 guez 44 print *, "Call sequence information: conf_guide"
60 guez 3
61 guez 83 print *, "Enter namelist 'conf_guide_nml'."
62     read(unit=*, nml=conf_guide_nml)
63     write(unit_nml, nml=conf_guide_nml)
64 guez 3
65 guez 140 lat_min_guide = lat_min_guide_deg / 180. * pi
66     lat_max_guide = lat_max_guide_deg / 180. * pi
67    
68 guez 115 ok_guide = any((/guide_u, guide_v, guide_t, guide_q/))
69     if (ok_guide .and. mod(day_step, 4 * iperiod) /= 0) call &
70 guez 171 abort_gcm("conf_guide", 'ok_guide day_step iperiod')
71 guez 115
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 guez 44 end SUBROUTINE conf_guide
88    
89     end module conf_guide_m

  ViewVC Help
Powered by ViewVC 1.1.21