source: LMDZ6/trunk/libf/dyn3d_common/inithist.F @ 4847

Last change on this file since 4847 was 4046, checked in by dcugnet, 3 years ago

First commit for new tracers.

  • parser routines readTracFiles, strings_mod and tracer_types added in misc using revision 4 of https://svn.lmd.jussieu.fr/tracers-parser
  • tested in sequential and parallel mode using ioipsl.
  • for now, only two fields of "tracers(:)" derived type vector are used: "name" and "longName".
  • 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.6 KB
RevLine 
[524]1!
[1279]2! $Id: inithist.F 4046 2021-12-15 22:18:49Z acaubel $
[524]3!
[1403]4      subroutine inithist(day0,anne0,tstep,t_ops,t_wrt)
[524]5
[1279]6#ifdef CPP_IOIPSL
[524]7       USE IOIPSL
[1279]8#endif
[4046]9       USE infotrac, ONLY : nqtot
[1403]10       use com_io_dyn_mod, only : histid,histvid,histuid,               &
11     &                        dynhist_file,dynhistv_file,dynhistu_file
[2597]12       USE comconst_mod, ONLY: pi
[2600]13       USE comvert_mod, ONLY: presnivs
[2601]14       USE temps_mod, ONLY: itau_dyn
15       
[524]16      implicit none
17
18C
19C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
20C   au format IOIPSL
21C
22C   Appels succesifs des routines: histbeg
23C                                  histhori
24C                                  histver
25C                                  histdef
26C                                  histend
27C
28C   Entree:
29C
30C      infile: nom du fichier histoire a creer
31C      day0,anne0: date de reference
32C      tstep: duree du pas de temps en seconde
33C      t_ops: frequence de l'operation pour IOIPSL
34C      t_wrt: frequence d'ecriture sur le fichier
35C      nq: nombre de traceurs
36C
37C
38C   L. Fairhead, LMD, 03/99
39C
40C =====================================================================
41C
42C   Declarations
[2597]43      include "dimensions.h"
44      include "paramet.h"
45      include "comgeom.h"
46      include "description.h"
47      include "iniprint.h"
[524]48
49C   Arguments
50C
[1279]51      integer day0, anne0
[524]52      real tstep, t_ops, t_wrt
53
[1279]54#ifdef CPP_IOIPSL
55! This routine needs IOIPSL to work
[524]56C   Variables locales
57C
58      integer tau0
59      real zjulian
60      integer iq
61      real rlong(iip1,jjp1), rlat(iip1,jjp1)
62      integer uhoriid, vhoriid, thoriid, zvertiid
63      integer ii,jj
64      integer zan, dayref
65C
66C  Initialisations
67C
68      pi = 4. * atan (1.)
69C
70C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
71C         
72
73      zan = anne0
74      dayref = day0
75      CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
76      tau0 = itau_dyn
77     
[1403]78! -------------------------------------------------------------
79! Creation des 3 fichiers pour les grilles horizontales U,V,Scal
80! -------------------------------------------------------------
81!Grille U     
[524]82      do jj = 1, jjp1
83        do ii = 1, iip1
84          rlong(ii,jj) = rlonu(ii) * 180. / pi
85          rlat(ii,jj) = rlatu(jj) * 180. / pi
86        enddo
87      enddo
88       
[1403]89      call histbeg(dynhistu_file, iip1, rlong(:,1), jjp1, rlat(1,:),
[524]90     .             1, iip1, 1, jjp1,
[1403]91     .             tau0, zjulian, tstep, uhoriid, histuid)
[524]92
[1403]93! Grille V
[524]94      do jj = 1, jjm
95        do ii = 1, iip1
96          rlong(ii,jj) = rlonv(ii) * 180. / pi
97          rlat(ii,jj) = rlatv(jj) * 180. / pi
98        enddo
99      enddo
100
[1403]101      call histbeg(dynhistv_file, iip1, rlong(:,1), jjm, rlat(1,:),
[524]102     .             1, iip1, 1, jjm,
[1403]103     .             tau0, zjulian, tstep, vhoriid, histvid)
104
105!Grille Scalaire
[524]106      do jj = 1, jjp1
107        do ii = 1, iip1
108          rlong(ii,jj) = rlonv(ii) * 180. / pi
109          rlat(ii,jj) = rlatu(jj) * 180. / pi
110        enddo
111      enddo
112
[1403]113      call histbeg(dynhist_file, iip1, rlong(:,1), jjp1, rlat(1,:),
114     .             1, iip1, 1, jjp1,
115     .             tau0, zjulian, tstep, thoriid, histid)
116! -------------------------------------------------------------
[524]117C  Appel a histvert pour la grille verticale
[1403]118! -------------------------------------------------------------
119      call histvert(histid, 'presnivs', 'Niveaux pression','mb',
120     .              llm, presnivs/100., zvertiid,'down')
121      call histvert(histvid, 'presnivs', 'Niveaux pression','mb',
122     .              llm, presnivs/100., zvertiid,'down')
123      call histvert(histuid, 'presnivs', 'Niveaux pression','mb',
124     .              llm, presnivs/100., zvertiid,'down')
[524]125C
[1403]126! -------------------------------------------------------------
[524]127C  Appels a histdef pour la definition des variables a sauvegarder
[1403]128! -------------------------------------------------------------
[524]129C
130C  Vents U
131C
[1403]132      call histdef(histuid, 'u', 'vent u', 'm/s',
[524]133     .             iip1, jjp1, uhoriid, llm, 1, llm, zvertiid,
134     .             32, 'inst(X)', t_ops, t_wrt)
135C
136C  Vents V
137C
[1403]138      call histdef(histvid, 'v', 'vent v', 'm/s',
[524]139     .             iip1, jjm, vhoriid, llm, 1, llm, zvertiid,
140     .             32, 'inst(X)', t_ops, t_wrt)
141
142C
143C  Temperature potentielle
144C
[1403]145      call histdef(histid, 'teta', 'temperature potentielle', '-',
[524]146     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
147     .             32, 'inst(X)', t_ops, t_wrt)
148C
149C  Geopotentiel
150C
[1403]151      call histdef(histid, 'phi', 'geopotentiel', '-',
[524]152     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
153     .             32, 'inst(X)', t_ops, t_wrt)
154C
155C  Traceurs
156C
[1403]157!
158!        DO iq=1,nqtot
[4046]159!          call histdef(histid, tracers(iq)%name,
160!                               tracers(iq)%longName, '-',
[1403]161!     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
162!     .             32, 'inst(X)', t_ops, t_wrt)
163!        enddo
164!C
[524]165C  Masse
166C
[1403]167      call histdef(histid, 'masse', 'masse', 'kg',
168     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
[524]169     .             32, 'inst(X)', t_ops, t_wrt)
170C
171C  Pression au sol
172C
[1403]173      call histdef(histid, 'ps', 'pression naturelle au sol', 'Pa',
[524]174     .             iip1, jjp1, thoriid, 1, 1, 1, -99,
175     .             32, 'inst(X)', t_ops, t_wrt)
176C
[1403]177C  Geopotentiel au sol
178!C
179!      call histdef(histid, 'phis', 'geopotentiel au sol', '-',
180!     .             iip1, jjp1, thoriid, 1, 1, 1, -99,
181!     .             32, 'inst(X)', t_ops, t_wrt)
182!C
[524]183C  Fin
184C
[1403]185      call histend(histid)
186      call histend(histuid)
187      call histend(histvid)
[1279]188#else
189! tell the user this routine should be run with ioipsl
190      write(lunout,*)"inithist: Warning this routine should not be",
191     &               " used without ioipsl"
192#endif
193! of #ifdef CPP_IOIPSL
[524]194      return
195      end
Note: See TracBrowser for help on using the repository browser.