/[lmdze]/trunk/dyn3d/init_dynzon.f
ViewVC logotype

Contents of /trunk/dyn3d/init_dynzon.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (show annotations)
Mon Jan 30 12:54:02 2012 UTC (12 years, 4 months ago) by guez
Original Path: trunk/libf/dyn3d/init_dynzon.f90
File size: 4019 byte(s)
Write used namelists to file "" instead of standard output.

Avoid aliasing in "inidissip" in calls to "divgrad2", "divgrad",
"gradiv2", "gradiv", "nxgraro2" and "nxgrarot". Add a degenerate
dimension to arrays so they have rank 3, like the dummy arguments in
"divgrad2", "divgrad", "gradiv2", "gradiv", "nxgraro2" and "nxgrarot".

Extract the initialization part from "bilan_dyn" and make a separate
procedure, "init_dynzon", from it.

Move variables from modules "iniprint" and "logic" to module
"conf_gcm_m".

Promote internal procedures of "fxy" to private procedures of module
"fxy_m".

Extracted documentation from "inigeom". Removed useless "save"
attributes. Removed useless intermediate variables. Extracted
processing of poles from loop on latitudes. Write coordinates to file
"longitude_latitude.txt" instead of standard output.

Do not use ozone tracer for radiative transfer.

1 module init_dynzon_m
2
3 IMPLICIT NONE
4
5 integer, parameter:: ntr = 5
6 integer, parameter:: nQ = 7
7 integer ncum, fileid
8 character(len=10) znom(ntr, nQ)
9 character(len=4), parameter:: nom(nQ) = (/'T ', 'gz ', 'K ', 'ang ', &
10 'u ', 'ovap', 'un '/)
11
12 contains
13
14 SUBROUTINE init_dynzon(dt_app)
15
16 ! From LMDZ4/libf/dyn3d/bilan_dyn.F, version 1.5 2005/03/16 10:12:17
17
18 USE conf_gcm_m, ONLY : day_step, iperiod, periodav
19 USE histcom, ONLY : histbeg_totreg, histdef, histend, histvert
20 USE calendar, ONLY : ymds2ju
21 USE dimens_m, ONLY : jjm, llm
22 USE comvert, ONLY : presnivs
23 USE comgeom, ONLY : rlatv
24 USE temps, ONLY : annee_ref, day_ref, itau_dyn
25 USE nr_util, ONLY : pi
26
27 ! Arguments:
28
29 real, intent(in):: dt_app
30
31 ! Local:
32
33 real dt_cum
34 character(len=5), parameter:: unites(nQ) = (/'K ', 'm2/s2', 'm2/s2', &
35 'ang ', 'm/s ', 'kg/kg', 'un '/)
36
37 ! champs de tansport en moyenne zonale
38 integer itr
39
40 character(len=26) znoml(ntr, nQ)
41 character(len=12) zunites(ntr, nQ)
42
43 character(len=3), parameter:: ctrs(ntr) = (/' ', 'TOT', 'MMC', 'TRS', &
44 'STN'/)
45
46 integer iQ
47
48 ! Initialisation du fichier contenant les moyennes zonales.
49
50 integer thoriid, zvertiid
51
52 real zjulian
53 integer zan, dayref
54
55 real rlong(jjm), rlatg(jjm)
56
57 !-----------------------------------------------------------------
58
59 print *, "Call sequence information: init_dynzon"
60
61 ! initialisation des fichiers
62 ! ncum est la frequence de stokage en pas de temps
63 ncum = day_step / iperiod * periodav
64 dt_cum = ncum * dt_app
65
66 ! Initialisation du fichier contenant les moyennes zonales
67
68 zan = annee_ref
69 dayref = day_ref
70 CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
71
72 rlong = 0.
73 rlatg = rlatv*180./pi
74
75 call histbeg_totreg('dynzon', rlong(:1), rlatg, 1, 1, 1, jjm, itau_dyn, &
76 zjulian, dt_cum, thoriid, fileid)
77
78 ! Appel à histvert pour la grille verticale
79
80 call histvert(fileid, 'presnivs', 'Niveaux sigma', 'mb', llm, presnivs, &
81 zvertiid)
82
83 ! Appels à histdef pour la définition des variables à sauvegarder
84 do iQ = 1, nQ
85 do itr = 1, ntr
86 if (itr == 1) then
87 znom(itr, iQ) = nom(iQ)
88 znoml(itr, iQ) = nom(iQ)
89 zunites(itr, iQ) = unites(iQ)
90 else
91 znom(itr, iQ) = ctrs(itr)//'v'//nom(iQ)
92 znoml(itr, iQ) = 'transport : v * '//nom(iQ)//' '//ctrs(itr)
93 zunites(itr, iQ) = 'm/s * '//unites(iQ)
94 endif
95 enddo
96 enddo
97
98 ! Déclarations des champs avec dimension verticale
99 do iQ = 1, nQ
100 do itr = 1, ntr
101 call histdef(fileid, znom(itr, iQ), znoml(itr, iQ), &
102 zunites(itr, iQ), 1, jjm, thoriid, llm, 1, llm, zvertiid, &
103 'ave(X)', dt_cum, dt_cum)
104 enddo
105 ! Déclarations pour les fonctions de courant
106 call histdef(fileid, 'psi'//nom(iQ), 'stream fn. '//znoml(2, iQ), &
107 zunites(2, iQ), 1, jjm, thoriid, llm, 1, llm, zvertiid, &
108 'ave(X)', dt_cum, dt_cum)
109 enddo
110
111 ! Déclarations pour les champs de transport d'air
112 call histdef(fileid, 'masse', 'masse', &
113 'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, &
114 'ave(X)', dt_cum, dt_cum)
115 call histdef(fileid, 'v', 'v', &
116 'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, &
117 'ave(X)', dt_cum, dt_cum)
118 ! Déclarations pour les fonctions de courant
119 call histdef(fileid, 'psi', 'stream fn. MMC ', 'mega t/s', &
120 1, jjm, thoriid, llm, 1, llm, zvertiid, &
121 'ave(X)', dt_cum, dt_cum)
122
123 ! Déclaration des champs 1D de transport en latitude
124 do iQ = 1, nQ
125 do itr = 2, ntr
126 call histdef(fileid, 'a'//znom(itr, iQ), znoml(itr, iQ), &
127 zunites(itr, iQ), 1, jjm, thoriid, 1, 1, 1, -99, &
128 'ave(X)', dt_cum, dt_cum)
129 enddo
130 enddo
131
132 CALL histend(fileid)
133
134 end SUBROUTINE init_dynzon
135
136 end module init_dynzon_m

  ViewVC Help
Powered by ViewVC 1.1.21