source: LMDZ6/trunk/libf/phylmd/initphysto.F90 @ 3774

Last change on this file since 3774 was 2343, checked in by Ehouarn Millour, 9 years ago

Another step towards a clean separation between physics and dynamics: adapted read_pstoke.F90, read_pstoke0.F90 initphysto.F90 and phystokenc.F90 (now module phystokenc_mod.F90) to not explicitely include/use file/modules from the dynamics.
In the process, added module "time_phylmdz_mod.F90" in the physics, which contains the information otherwise found in "temps.h" (which is in the dynamics) and should be used instead.
EM

  • 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: 6.7 KB
Line 
1!
2! $Id: initphysto.F90 2343 2015-08-20 10:02:53Z lguez $
3!
4SUBROUTINE initphysto(infile,tstep,t_ops,t_wrt,fileid)
5 
6  USE dimphy
7  USE mod_phys_lmdz_para
8  USE IOIPSL
9  USE iophy
10  USE indice_sol_mod
11  USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, nbp_lev
12  USE time_phylmdz_mod, ONLY: day_ref, annee_ref
13 
14  IMPLICIT NONE
15
16!
17!   Routine d'initialisation des ecritures des fichiers histoires LMDZ
18!   au format IOIPSL
19!
20!   Appels succesifs des routines: histbeg
21!                                  histhori
22!                                  histver
23!                                  histdef
24!                                  histend
25!
26!   Entree:
27!
28!      infile: nom du fichier histoire a creer
29!      day0,anne0: date de reference
30!      tstep: duree du pas de temps en seconde
31!      t_ops: frequence de l'operation pour IOIPSL
32!      t_wrt: frequence d'ecriture sur le fichier
33!
34!   Sortie:
35!      fileid: ID du fichier netcdf cree
36!
37!   L. Fairhead, LMD, 03/99
38!
39! =====================================================================
40
41!   Arguments
42  CHARACTER(len=*), INTENT(IN) :: infile
43  REAL, INTENT(IN)             :: tstep
44  REAL, INTENT(IN)             :: t_ops
45  REAL, INTENT(IN)             :: t_wrt
46  INTEGER, INTENT(OUT)         :: fileid
47
48! Variables locales
49  INTEGER nhoriid, i
50  INTEGER l,k
51  REAL nivsigs(nbp_lev)
52  INTEGER tau0
53  REAL zjulian
54  INTEGER iq
55  INTEGER uhoriid, vhoriid, thoriid, zvertiid
56  INTEGER ii,jj
57  INTEGER zan, idayref
58  LOGICAL ok_sync
59  REAL zx_lon(nbp_lon,nbp_lat), zx_lat(nbp_lon,nbp_lat)
60  CHARACTER(len=12) :: nvar
61
62!  Initialisations
63!
64  ok_sync= .TRUE.
65!
66!  Appel a histbeg: creation du fichier netcdf et initialisations diverses
67!         
68
69  zan = annee_ref
70  idayref = day_ref
71  CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
72  tau0 = 0
73 
74  CALL histbeg_phy(infile,tau0, zjulian, tstep, &
75       nhoriid, fileid)
76
77!$OMP MASTER   
78!  Appel a histvert pour la grille verticale
79!
80  DO l=1,nbp_lev
81     nivsigs(l)=REAL(l)
82  ENDDO
83 
84  CALL histvert(fileid, 'sig_s', 'Niveaux sigma', &
85       'sigma_level', &
86       nbp_lev, nivsigs, zvertiid)
87!
88!  Appels a histdef pour la definition des variables a sauvegarder
89!
90  CALL histdef(fileid, "phis", "Surface geop. height", "-", &
91       nbp_lon,jj_nb,nhoriid, 1,1,1, -99, 32, &
92       "once", t_ops, t_wrt)
93 
94  CALL histdef(fileid, "aire", "Grid area", "-", &
95       nbp_lon,jj_nb,nhoriid, 1,1,1, -99, 32, &
96       "once", t_ops, t_wrt)
97
98  CALL histdef(fileid, "longitudes", "longitudes", "-", &
99       nbp_lon,jj_nb,nhoriid, 1,1,1, -99, 32, &
100       "once", t_ops, t_wrt)
101
102  CALL histdef(fileid, "latitudes", "latitudes", "-", &
103       nbp_lon,jj_nb,nhoriid, 1,1,1, -99, 32, &
104       "once", t_ops, t_wrt)
105! T
106  CALL histdef(fileid, 't', 'Temperature', 'K', nbp_lon, jj_nb, nhoriid, &
107       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
108! mfu
109  CALL histdef(fileid, 'mfu', 'flx m. pan. mt', 'kg m/s',nbp_lon, jj_nb, nhoriid, &
110       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
111! mfd
112  CALL histdef(fileid, 'mfd', 'flx m. pan. des', 'kg m/s',nbp_lon, jj_nb, nhoriid, &
113       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
114! en_u
115  CALL histdef(fileid, 'en_u', 'flx ent pan mt', 'kg m/s', nbp_lon, jj_nb, nhoriid, &
116       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
117! de_u
118  CALL histdef(fileid, 'de_u', 'flx det pan mt', 'kg m/s',nbp_lon, jj_nb, nhoriid, &
119       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
120! en_d
121  CALL histdef(fileid, 'en_d', 'flx ent pan dt', 'kg m/s', nbp_lon, jj_nb, nhoriid, &
122       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
123! de_d
124  CALL histdef(fileid, 'de_d', 'flx det pan dt', 'kg m/s', nbp_lon, jj_nb, nhoriid, &
125       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
126! coefh
127  CALL histdef(fileid, "coefh", " ", " ", nbp_lon, jj_nb, nhoriid, &
128       nbp_lev, 1, nbp_lev, zvertiid,32, "inst(X)", t_ops, t_wrt)
129! fm_th
130  CALL histdef(fileid, "fm_th", " ", " ",nbp_lon, jj_nb, nhoriid, &
131       nbp_lev, 1, nbp_lev, zvertiid,32, "inst(X)", t_ops, t_wrt)
132! en_th
133  CALL histdef(fileid, "en_th", " ", " ",nbp_lon, jj_nb, nhoriid, &
134       nbp_lev, 1, nbp_lev, zvertiid,32, "inst(X)", t_ops, t_wrt)
135! frac_impa
136  CALL histdef(fileid, 'frac_impa', ' ', ' ',nbp_lon, jj_nb, nhoriid, &
137       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
138! frac_nucl
139  CALL histdef(fileid, 'frac_nucl', ' ', ' ',nbp_lon, jj_nb, nhoriid, &
140       nbp_lev, 1, nbp_lev, zvertiid,32, 'inst(X)', t_ops, t_wrt)
141! pyu1
142  CALL histdef(fileid, "pyu1", " ", " ", nbp_lon,jj_nb,nhoriid, &
143       1,1,1, -99, 32, "inst(X)", t_ops, t_wrt)
144! pyv1
145  CALL histdef(fileid, "pyv1", " ", " ", nbp_lon,jj_nb,nhoriid, &
146       1,1,1, -99, 32,"inst(X)", t_ops, t_wrt)   
147! ftsol1
148  CALL histdef(fileid, "ftsol1", " ", " ",nbp_lon, jj_nb, nhoriid, &
149       1, 1,1, -99,32, "inst(X)", t_ops, t_wrt)
150! ftsol2
151  CALL histdef(fileid, "ftsol2", " ", " ",nbp_lon, jj_nb, nhoriid, &
152       1, 1,1, -99,32, "inst(X)", t_ops, t_wrt)
153! ftsol3
154  CALL histdef(fileid, "ftsol3", " ", " ", nbp_lon, jj_nb, nhoriid, &
155       1, 1,1, -99,32, "inst(X)", t_ops, t_wrt)
156! ftsol4
157  CALL histdef(fileid, "ftsol4", " ", " ",nbp_lon, jj_nb, nhoriid, &
158       1, 1,1, -99, 32, "inst(X)", t_ops, t_wrt)
159! psrf1
160  CALL histdef(fileid, "psrf1", " ", " ",nbp_lon, jj_nb, nhoriid, &
161       1, 1, 1, -99,32, "inst(X)", t_ops, t_wrt)
162! psrf2
163  CALL histdef(fileid, "psrf2", " ", " ",nbp_lon, jj_nb, nhoriid, &
164       1, 1, 1, -99, 32, "inst(X)", t_ops, t_wrt)
165! psrf3
166  CALL histdef(fileid, "psrf3", " ", " ",nbp_lon, jj_nb, nhoriid, &
167       1, 1, 1, -99, 32, "inst(X)", t_ops, t_wrt)
168! psrf4
169  CALL histdef(fileid, "psrf4", " ", " ", nbp_lon, jj_nb, nhoriid, &
170       1, 1, 1, -99,32, "inst(X)", t_ops, t_wrt)
171! sh
172  CALL histdef(fileid, 'sh', '', '', nbp_lon, jj_nb, nhoriid, &
173       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
174! da
175  CALL histdef(fileid, 'da', '', '', nbp_lon, jj_nb, nhoriid, &
176       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
177! mp
178  CALL histdef(fileid, 'mp', '', '', nbp_lon, jj_nb, nhoriid, &
179       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
180! upwd
181  CALL histdef(fileid, 'upwd', '', '', nbp_lon, jj_nb, nhoriid, &
182       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
183! dnwd
184  CALL histdef(fileid, 'dnwd', '', '', nbp_lon, jj_nb, nhoriid, &
185       nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
186
187! phi
188  DO k=1,nbp_lev
189     IF (k<10) THEN
190        WRITE(nvar,'(i1)') k
191     ELSE IF (k<100) THEN
192        WRITE(nvar,'(i2)') k
193     ELSE
194        WRITE(nvar,'(i3)') k
195     END IF
196     nvar='phi_lev'//trim(nvar)
197     
198     CALL histdef(fileid, nvar, '', '', nbp_lon, jj_nb, nhoriid, &
199          nbp_lev, 1, nbp_lev, zvertiid, 32, 'inst(X)', t_ops, t_wrt)
200  END DO
201
202  CALL histend(fileid)
203  IF (ok_sync) CALL histsync
204!$OMP END MASTER
205       
206END SUBROUTINE initphysto
Note: See TracBrowser for help on using the repository browser.