/[lmdze]/trunk/libf/dyn3d/init_dynzon.f90
ViewVC logotype

Annotation of /trunk/libf/dyn3d/init_dynzon.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (hide annotations)
Mon Jan 30 12:54:02 2012 UTC (12 years, 3 months ago) by guez
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 guez 57 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