source: trunk/MESOSCALE/LMDZ.MARS/libf_gcm/phymars/iniwrite.F @ 134

Last change on this file since 134 was 57, checked in by aslmd, 14 years ago

mineur LMD_MM_MARS: ajout du GCM ancienne physique, systeme maintenant complet sur SVN (ne manque que la base de donnees d'etats initiaux)

File size: 9.5 KB
Line 
1      SUBROUTINE iniwrite(nid,idayref,phis)
2      IMPLICIT NONE
3
4c=======================================================================
5c
6c   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
7c   -------
8c
9c   Objet:
10c   ------
11c
12c   'Initialize' the diagfi.nc file: write down dimensions as well
13c   as time-independent fields (e.g: geopotential, mesh area, ...)
14c
15c=======================================================================
16c-----------------------------------------------------------------------
17c   Declarations:
18c   -------------
19
20#include "dimensions.h"
21#include "paramet.h"
22#include "comcstfi.h"
23#include "comvert.h"
24#include "comgeom.h"
25#include "temps.h"
26#include "ener.h"
27#include "logic.h"
28#include "netcdf.inc"
29#include "description.h"
30#include "serre.h"
31#include"dimphys.h"
32
33c   Arguments:
34c   ----------
35
36      integer nid        ! NetCDF file ID
37      INTEGER*4 idayref  ! date (initial date for this run)
38      REAL phis(ip1jmp1) ! surface geopotential
39
40c   Local:
41c   ------
42      INTEGER length,l
43      parameter (length = 100)
44      REAL tab_cntrl(length) ! run parameters are stored in this array
45      INTEGER ierr
46
47      integer :: nvarid,idim_index,idim_rlonu,idim_rlonv
48      integer :: idim_rlatu,idim_rlatv,idim_llmp1,idim_llm
49      integer, dimension(2) :: id 
50c-----------------------------------------------------------------------
51
52      DO l=1,length
53         tab_cntrl(l)=0.
54      ENDDO
55      tab_cntrl(1)  = FLOAT(iim)
56      tab_cntrl(2)  = FLOAT(jjm)
57      tab_cntrl(3)  = FLOAT(llm)
58      tab_cntrl(4)  = FLOAT(idayref)
59      tab_cntrl(5)  = rad
60      tab_cntrl(6)  = omeg
61      tab_cntrl(7)  = g
62      tab_cntrl(8)  = mugaz
63      tab_cntrl(9)  = rcp
64      tab_cntrl(10) = daysec
65      tab_cntrl(11) = dtphys
66      tab_cntrl(12) = etot0
67      tab_cntrl(13) = ptot0
68      tab_cntrl(14) = ztot0
69      tab_cntrl(15) = stot0
70      tab_cntrl(16) = ang0
71c
72c    ..........    P.Le Van  ( ajout le 8/04/96 )    .........
73c         .....        parametres  pour le zoom          ......   
74      tab_cntrl(17)  = clon
75      tab_cntrl(18)  = clat
76      tab_cntrl(19)  = grossismx
77      tab_cntrl(20)  = grossismy
78c
79c     .....   ajout  le 6/05/97 et le 15/10/97  .......
80c
81      IF ( fxyhypb )   THEN
82        tab_cntrl(21) = 1.
83        tab_cntrl(22) = dzoomx
84        tab_cntrl(23) = dzoomy
85      ELSE
86        tab_cntrl(21) = 0.
87        tab_cntrl(22) = dzoomx
88        tab_cntrl(23) = dzoomy
89        tab_cntrl(24) = 0.
90        IF( ysinus )  tab_cntrl(24) = 1.
91      ENDIF
92
93c    .........................................................
94
95! Define dimensions
96   
97      ierr = NF_REDEF (nid)
98
99      ierr = NF_DEF_DIM (nid, "index", length, idim_index)
100      ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
101      ierr = NF_DEF_DIM (nid, "latitude", jjp1, idim_rlatu)
102      ierr = NF_DEF_DIM (nid, "longitude", iip1, idim_rlonv)
103      ierr = NF_DEF_DIM (nid, "rlatv", jjm, idim_rlatv)
104      ierr = NF_DEF_DIM (nid, "interlayer", (llm+1), idim_llmp1)
105      ierr = NF_DEF_DIM (nid, "altitude", llm, idim_llm)
106c
107      ierr = NF_ENDDEF(nid)
108
109c  Contol parameters for this run
110      ierr = NF_REDEF (nid)
111#ifdef NC_DOUBLE
112      ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1,
113     .       idim_index,nvarid)
114#else
115      ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1,
116     .       idim_index,nvarid)
117#endif
118      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 18,
119     .                       "Control parameters")
120      ierr = NF_ENDDEF(nid)
121#ifdef NC_DOUBLE
122      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
123#else
124      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
125#endif
126
127c --------------------------
128c  longitudes and latitudes
129      ierr = NF_REDEF (nid)
130#ifdef NC_DOUBLE
131      ierr = NF_DEF_VAR (nid, "rlonu", NF_DOUBLE, 1, idim_rlonu,nvarid)
132#else
133      ierr = NF_DEF_VAR (nid, "rlonu", NF_FLOAT, 1, idim_rlonu,nvarid)
134#endif
135      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 21,
136     .                       "Longitudes at u nodes")
137      ierr = NF_ENDDEF(nid)
138#ifdef NC_DOUBLE
139      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonu/pi*180)
140#else
141      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonu/pi*180)
142#endif
143c
144c --------------------------
145      ierr = NF_REDEF (nid)
146#ifdef NC_DOUBLE
147      ierr =NF_DEF_VAR(nid, "latitude", NF_DOUBLE, 1, idim_rlatu,nvarid)
148#else
149      ierr =NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim_rlatu,nvarid)
150#endif
151      ierr =NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
152      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
153     .      "North latitude")
154      ierr = NF_ENDDEF(nid)
155#ifdef NC_DOUBLE
156      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu/pi*180)
157#else
158      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu/pi*180)
159#endif
160c
161c --------------------------
162      ierr = NF_REDEF (nid)
163#ifdef NC_DOUBLE
164      ierr =NF_DEF_VAR(nid,"longitude", NF_DOUBLE, 1, idim_rlonv,nvarid)
165#else
166      ierr = NF_DEF_VAR(nid,"longitude", NF_FLOAT, 1, idim_rlonv,nvarid)
167#endif
168      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
169     .      "East longitude")
170      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
171      ierr = NF_ENDDEF(nid)
172#ifdef NC_DOUBLE
173      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv/pi*180)
174#else
175      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv/pi*180)
176#endif
177c
178c --------------------------
179      ierr = NF_REDEF (nid)
180#ifdef NC_DOUBLE
181      ierr = NF_DEF_VAR (nid, "altitude", NF_DOUBLE, 1,
182     .       idim_llm,nvarid)
183#else
184      ierr = NF_DEF_VAR (nid, "altitude", NF_FLOAT, 1,
185     .       idim_llm,nvarid)
186#endif
187      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name",10,"pseudo-alt")
188      ierr = NF_PUT_ATT_TEXT (nid,nvarid,'units',2,"km")
189      ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',2,"up")
190
191      ierr = NF_ENDDEF(nid)
192#ifdef NC_DOUBLE
193      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,pseudoalt)
194#else
195      ierr = NF_PUT_VAR_REAL (nid,nvarid,pseudoalt)
196#endif
197c
198c --------------------------
199      ierr = NF_REDEF (nid)
200#ifdef NC_DOUBLE
201      ierr = NF_DEF_VAR (nid, "rlatv", NF_DOUBLE, 1, idim_rlatv,nvarid)
202#else
203      ierr = NF_DEF_VAR (nid, "rlatv", NF_FLOAT, 1, idim_rlatv,nvarid)
204#endif
205      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 20,
206     .                       "Latitudes at v nodes")
207      ierr = NF_ENDDEF(nid)
208#ifdef NC_DOUBLE
209      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatv/pi*180)
210#else
211      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatv/pi*180)
212#endif
213c
214c --------------------------
215c  Vertical levels
216      call def_var(nid,"aps","hybrid pressure at midlayers ","Pa",
217     .            1,idim_llm,nvarid,ierr)
218#ifdef NC_DOUBLE
219      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aps)
220#else
221      ierr = NF_PUT_VAR_REAL (nid,nvarid,aps)
222#endif
223
224      call def_var(nid,"bps","hybrid sigma at midlayers"," ",
225     .            1,idim_llm,nvarid,ierr)
226#ifdef NC_DOUBLE
227      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bps)
228#else
229      ierr = NF_PUT_VAR_REAL (nid,nvarid,bps)
230#endif
231
232      call def_var(nid,"ap","hybrid pressure at interlayers","Pa",
233     .            1,idim_llmp1,nvarid,ierr)
234#ifdef NC_DOUBLE
235      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ap)
236#else
237      ierr = NF_PUT_VAR_REAL (nid,nvarid,ap)
238#endif
239
240      call def_var(nid,"bp","hybrid sigma at interlayers"," ",
241     .            1,idim_llmp1,nvarid,ierr)
242#ifdef NC_DOUBLE
243      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bp)
244#else
245      ierr = NF_PUT_VAR_REAL (nid,nvarid,bp)
246#endif
247
248c
249c --------------------------
250c  Mesh area and conversion coefficients cov. <-> contra. <--> natural
251
252      id(1)=idim_rlonu
253      id(2)=idim_rlatu
254c
255      ierr = NF_REDEF (nid)
256#ifdef NC_DOUBLE
257      ierr = NF_DEF_VAR (nid, "cu", NF_DOUBLE, 2, id,nvarid)
258#else
259      ierr = NF_DEF_VAR (nid, "cu", NF_FLOAT, 2, id,nvarid)
260#endif
261      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 40,
262     .             "Conversion coefficients cov <--> natural")
263      ierr = NF_ENDDEF(nid)
264#ifdef NC_DOUBLE
265      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cu)
266#else
267      ierr = NF_PUT_VAR_REAL (nid,nvarid,cu)
268#endif
269c
270      id(1)=idim_rlonv
271      id(2)=idim_rlatv
272c
273c --------------------------
274      ierr = NF_REDEF (nid)
275#ifdef NC_DOUBLE
276      ierr = NF_DEF_VAR (nid, "cv", NF_DOUBLE, 2, id,nvarid)
277#else
278      ierr = NF_DEF_VAR (nid, "cv", NF_FLOAT, 2, id,nvarid)
279#endif
280      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 40,
281     .             "Conversion coefficients cov <--> natural")
282      ierr = NF_ENDDEF(nid)
283#ifdef NC_DOUBLE
284      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cv)
285#else
286      ierr = NF_PUT_VAR_REAL (nid,nvarid,cv)
287#endif
288c
289      id(1)=idim_rlonv
290      id(2)=idim_rlatu
291c
292c --------------------------
293      ierr = NF_REDEF (nid)
294#ifdef NC_DOUBLE
295      ierr = NF_DEF_VAR (nid, "aire", NF_DOUBLE, 2, id,nvarid)
296#else
297      ierr = NF_DEF_VAR (nid, "aire", NF_FLOAT, 2, id,nvarid)
298#endif
299      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9,
300     .                       "Mesh area")
301      ierr = NF_ENDDEF(nid)
302#ifdef NC_DOUBLE
303      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aire)
304#else
305      ierr = NF_PUT_VAR_REAL (nid,nvarid,aire)
306#endif
307c
308c  Surface geopotential
309      id(1)=idim_rlonv
310      id(2)=idim_rlatu
311c
312      ierr = NF_REDEF (nid)
313#ifdef NC_DOUBLE
314      ierr = NF_DEF_VAR (nid, "phisinit", NF_DOUBLE, 2, id,nvarid)
315#else
316      ierr = NF_DEF_VAR (nid, "phisinit", NF_FLOAT, 2, id,nvarid)
317#endif
318      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 27,
319     .                       "Geopotential at the surface")
320      ierr = NF_ENDDEF(nid)
321#ifdef NC_DOUBLE
322      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,phis)
323#else
324      ierr = NF_PUT_VAR_REAL (nid,nvarid,phis)
325#endif
326c
327
328      write(*,*)'iniwrite: iim,jjm,llm,idayref',iim,jjm,llm,idayref
329      write(*,*)'iniwrite: rad,omeg,g,mugaz,rcp',
330     s rad,omeg,g,mugaz,rcp
331      write(*,*)'iniwrite: daysec,dtphys',daysec,dtphys
332
333      END
Note: See TracBrowser for help on using the repository browser.