source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/initfluxsto.f90 @ 5185

Last change on this file since 5185 was 5159, checked in by abarral, 5 months ago

Put dimensions.h and paramet.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.5 KB
Line 
1! $Id: initfluxsto.f90 5159 2024-08-02 19:58:25Z abarral $
2
3SUBROUTINE initfluxsto &
4        (infile, tstep, t_ops, t_wrt, &
5        fileid, filevid, filedid)
6
7  USE IOIPSL
8  USE comconst_mod, ONLY: pi
9  USE comvert_mod, ONLY: nivsigs
10  USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn
11  USE lmdz_description, ONLY: descript
12  USE lmdz_iniprint, ONLY: lunout, prt_level
13  USE lmdz_comgeom
14
15  USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm
16  USE lmdz_paramet
17  IMPLICIT NONE
18
19
20  !   Routine d'initialisation des ecritures des fichiers histoires LMDZ
21  !   au format IOIPSL
22
23  !   Appels succesifs des routines: histbeg
24  !                              histhori
25  !                              histver
26  !                              histdef
27  !                              histend
28
29  !   Entree:
30
31  !  infile: nom du fichier histoire a creer
32  !  day0,anne0: date de reference
33  !  tstep: duree du pas de temps en seconde
34  !  t_ops: frequence de l'operation pour IOIPSL
35  !  t_wrt: frequence d'ecriture sur le fichier
36
37  !   Sortie:
38  !  fileid: ID du fichier netcdf cree
39  !  filevid:ID du fichier netcdf pour la grille v
40
41  !   L. Fairhead, LMD, 03/99
42
43  ! =====================================================================
44
45  !   Declarations
46
47
48
49  !   Arguments
50
51  CHARACTER(LEN = *) :: infile
52  REAL :: tstep, t_ops, t_wrt
53  INTEGER :: fileid, filevid, filedid
54
55  ! This routine needs IOIPSL to work
56  !   Variables locales
57
58  REAL :: nivd(1)
59  INTEGER :: tau0
60  REAL :: zjulian
61  CHARACTER(LEN = 3) :: str
62  CHARACTER(LEN = 10) :: ctrac
63  INTEGER :: iq
64  REAL :: rlong(iip1, jjp1), rlat(iip1, jjp1), rl(1, 1)
65  INTEGER :: uhoriid, vhoriid, thoriid, zvertiid, dhoriid, dvertiid
66  INTEGER :: ii, jj
67  INTEGER :: zan, idayref
68  LOGICAL :: ok_sync
69
70  !  Initialisations
71
72  pi = 4. * atan (1.)
73  str = 'q  '
74  ctrac = 'traceur   '
75  ok_sync = .TRUE.
76
77  !  Appel a histbeg: creation du fichier netcdf et initialisations diverses
78  !
79
80  zan = annee_ref
81  idayref = day_ref
82  CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
83  tau0 = itau_dyn
84
85  DO jj = 1, jjp1
86    DO ii = 1, iip1
87      rlong(ii, jj) = rlonu(ii) * 180. / pi
88      rlat(ii, jj) = rlatu(jj) * 180. / pi
89    enddo
90  enddo
91
92  CALL histbeg(infile, iip1, rlong(:, 1), jjp1, rlat(1, :), &
93          1, iip1, 1, jjp1, &
94          tau0, zjulian, tstep, uhoriid, fileid)
95
96  !  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
97  !  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
98  !  un meme fichier)
99
100  DO jj = 1, jjm
101    DO ii = 1, iip1
102      rlong(ii, jj) = rlonv(ii) * 180. / pi
103      rlat(ii, jj) = rlatv(jj) * 180. / pi
104    enddo
105  enddo
106
107  CALL histbeg('fluxstokev.nc', iip1, rlong(:, 1), jjm, rlat(1, :), &
108          1, iip1, 1, jjm, &
109          tau0, zjulian, tstep, vhoriid, filevid)
110
111  rl(1, 1) = 1.
112  CALL histbeg('defstoke.nc', 1, rl, 1, rl, &
113          1, 1, 1, 1, &
114          tau0, zjulian, tstep, dhoriid, filedid)
115
116
117  !  Appel a histhori pour rajouter les autres grilles horizontales
118
119  DO jj = 1, jjp1
120    DO ii = 1, iip1
121      rlong(ii, jj) = rlonv(ii) * 180. / pi
122      rlat(ii, jj) = rlatu(jj) * 180. / pi
123    enddo
124  enddo
125
126  CALL histhori(fileid, iip1, rlong, jjp1, rlat, 'scalar', &
127          'Grille points scalaires', thoriid)
128
129
130  !  Appel a histvert pour la grille verticale
131
132  CALL histvert(fileid, 'sig_s', 'Niveaux sigma', &
133          'sigma_level', &
134          llm, nivsigs, zvertiid)
135  ! Pour le fichier V
136  CALL histvert(filevid, 'sig_s', 'Niveaux sigma', &
137          'sigma_level', &
138          llm, nivsigs, zvertiid)
139  ! pour le fichier def
140  nivd(1) = 1
141  CALL histvert(filedid, 'sig_s', 'Niveaux sigma', &
142          'sigma_level', &
143          1, nivd, dvertiid)
144
145
146  !  Appels a histdef pour la definition des variables a sauvegarder
147
148  CALL histdef(fileid, "phis", "Surface geop. height", "-", &
149          iip1, jjp1, thoriid, 1, 1, 1, -99, 32, &
150          "once", t_ops, t_wrt)
151
152  CALL histdef(fileid, "aire", "Grid area", "-", &
153          iip1, jjp1, thoriid, 1, 1, 1, -99, 32, &
154          "once", t_ops, t_wrt)
155
156  CALL histdef(filedid, "dtvr", "tps dyn", "s", &
157          1, 1, dhoriid, 1, 1, 1, -99, 32, &
158          "once", t_ops, t_wrt)
159
160  CALL histdef(filedid, "istdyn", "tps stock", "s", &
161          1, 1, dhoriid, 1, 1, 1, -99, 32, &
162          "once", t_ops, t_wrt)
163
164  CALL histdef(filedid, "istphy", "tps stock phy", "s", &
165          1, 1, dhoriid, 1, 1, 1, -99, 32, &
166          "once", t_ops, t_wrt)
167
168
169
170  ! Masse
171
172  CALL histdef(fileid, 'masse', 'Masse', 'kg', &
173          iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
174          32, 'inst(X)', t_ops, t_wrt)
175
176  !  Pbaru
177
178  CALL histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s', &
179          iip1, jjp1, uhoriid, llm, 1, llm, zvertiid, &
180          32, 'inst(X)', t_ops, t_wrt)
181
182
183  !  Pbarv
184
185  CALL histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s', &
186          iip1, jjm, vhoriid, llm, 1, llm, zvertiid, &
187          32, 'inst(X)', t_ops, t_wrt)
188
189  !  w
190
191  CALL histdef(fileid, 'w', 'flx de masse vert', 'kg m/s', &
192          iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
193          32, 'inst(X)', t_ops, t_wrt)
194
195
196  !  Temperature potentielle
197
198  CALL histdef(fileid, 'teta', 'temperature potentielle', '-', &
199          iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
200          32, 'inst(X)', t_ops, t_wrt)
201  !
202
203
204  ! Geopotentiel
205
206  CALL histdef(fileid, 'phi', 'geopotentiel instantane', '-', &
207          iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
208          32, 'inst(X)', t_ops, t_wrt)
209
210  !  Fin
211
212  CALL histend(fileid)
213  CALL histend(filevid)
214  CALL histend(filedid)
215  IF (ok_sync) THEN
216    CALL histsync(fileid)
217    CALL histsync(filevid)
218    CALL histsync(filedid)
219  ENDIF
220
221  RETURN
222END SUBROUTINE initfluxsto
Note: See TracBrowser for help on using the repository browser.