source: trunk/LMDZ.GENERIC/libf/phystd/iniwrite_specVI.F @ 1403

Last change on this file since 1403 was 1384, checked in by emillour, 11 years ago

Generic GCM:

  • Some code cleanup: turning comcstfi.h into module comcstfi_mod.F90

EM

File size: 6.8 KB
Line 
1      SUBROUTINE iniwrite_specVI(nid,idayref)
2
3      use radinc_h, only: L_NSPECTV
4      use radcommon_h, only: WNOV,DWNV
5      use comsoil_h
6      use comcstfi_mod, only: rad, omeg, g, mugaz, rcp, daysec, dtphys,
7     &                        pi
8      implicit none
9
10c=======================================================================
11c
12c   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
13c   -------
14c
15c   Objet:
16c   ------
17c
18c   'Initialize' the diagfi_spec.nc file: write down dimensions as well
19c   as time-independent fields (e.g: geopotential, mesh area, ...)
20c
21c=======================================================================
22c-----------------------------------------------------------------------
23c   Declarations:
24c   -------------
25
26#include "dimensions.h"
27#include "paramet.h"
28#include "comvert.h"
29#include "comgeom.h"
30#include "temps.h"
31#include "ener.h"
32#include "logic.h"
33#include "netcdf.inc"
34#include "serre.h"
35!#include"dimphys.h"
36
37c   Arguments:
38c   ----------
39
40      integer nid        ! NetCDF file ID
41      INTEGER*4 idayref  ! date (initial date for this run)
42
43c   Local:
44c   ------
45      INTEGER length,l
46      parameter (length = 100)
47      REAL tab_cntrl(length) ! run parameters are stored in this array
48      INTEGER ierr
49
50      integer :: nvarid,idim_index,idim_rlonu,idim_rlonv
51      integer :: idim_rlatu,idim_rlatv,idim_llmp1,idim_llm
52 !     integer :: idim_nsoilmx ! "subsurface_layers" dimension ID #
53      integer :: idim_bandsVI ! "VI Wavenumber" dimension ID #
54      integer, dimension(2) :: id 
55
56c-----------------------------------------------------------------------
57
58      DO l=1,length
59         tab_cntrl(l)=0.
60      ENDDO
61      tab_cntrl(1)  = FLOAT(iim)
62      tab_cntrl(2)  = FLOAT(jjm)
63      tab_cntrl(3)  = FLOAT(llm)
64      tab_cntrl(4)  = FLOAT(idayref)
65      tab_cntrl(5)  = rad
66      tab_cntrl(6)  = omeg
67      tab_cntrl(7)  = g
68      tab_cntrl(8)  = mugaz
69      tab_cntrl(9)  = rcp
70      tab_cntrl(10) = daysec
71      tab_cntrl(11) = dtphys
72      tab_cntrl(12) = etot0
73      tab_cntrl(13) = ptot0
74      tab_cntrl(14) = ztot0
75      tab_cntrl(15) = stot0
76      tab_cntrl(16) = ang0
77c
78c    ..........    P.Le Van  ( ajout le 8/04/96 )    .........
79c         .....        parametres  pour le zoom          ......   
80      tab_cntrl(17)  = clon
81      tab_cntrl(18)  = clat
82      tab_cntrl(19)  = grossismx
83      tab_cntrl(20)  = grossismy
84c
85c     .....   ajout  le 6/05/97 et le 15/10/97  .......
86c
87      IF ( fxyhypb )   THEN
88        tab_cntrl(21) = 1.
89        tab_cntrl(22) = dzoomx
90        tab_cntrl(23) = dzoomy
91      ELSE
92        tab_cntrl(21) = 0.
93        tab_cntrl(22) = dzoomx
94        tab_cntrl(23) = dzoomy
95        tab_cntrl(24) = 0.
96        IF( ysinus )  tab_cntrl(24) = 1.
97      ENDIF
98
99c    .........................................................
100
101! Define dimensions
102   
103      ierr = NF_REDEF (nid)
104
105      ierr = NF_DEF_DIM (nid, "index", length, idim_index)
106      ierr = NF_DEF_DIM (nid, "latitude", jjp1, idim_rlatu)
107      ierr = NF_DEF_DIM (nid, "longitude", iip1, idim_rlonv)
108      ierr = NF_DEF_DIM (nid, "VI Wavenumber",L_NSPECTV,idim_bandsVI)
109
110      ierr = NF_ENDDEF(nid)
111
112c  Contol parameters for this run
113      ierr = NF_REDEF (nid)
114#ifdef NC_DOUBLE
115      ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1,
116     .       idim_index,nvarid)
117#else
118      ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1,
119     .       idim_index,nvarid)
120#endif
121      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 18,
122     .                       "Control parameters")
123      ierr = NF_ENDDEF(nid)
124#ifdef NC_DOUBLE
125      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
126#else
127      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
128#endif
129
130c --------------------------
131c  longitudes and latitudes
132
133      ierr = NF_REDEF (nid)
134#ifdef NC_DOUBLE
135      ierr =NF_DEF_VAR(nid, "latitude", NF_DOUBLE, 1, idim_rlatu,nvarid)
136#else
137      ierr =NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim_rlatu,nvarid)
138#endif
139      ierr =NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
140      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
141     .      "North latitude")
142      ierr = NF_ENDDEF(nid)
143#ifdef NC_DOUBLE
144      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu/pi*180)
145#else
146      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu/pi*180)
147#endif
148c
149c --------------------------
150      ierr = NF_REDEF (nid)
151#ifdef NC_DOUBLE
152      ierr =NF_DEF_VAR(nid,"longitude", NF_DOUBLE, 1, idim_rlonv,nvarid)
153#else
154      ierr = NF_DEF_VAR(nid,"longitude", NF_FLOAT, 1, idim_rlonv,nvarid)
155#endif
156      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
157     .      "East longitude")
158      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
159      ierr = NF_ENDDEF(nid)
160#ifdef NC_DOUBLE
161      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv/pi*180)
162#else
163      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv/pi*180)
164#endif
165c
166
167!-------------------------------
168! Number of bands in the IR
169!-------------------------------
170
171      ierr=NF_REDEF (nid) ! Enter NetCDF (re-)define mode
172      ! define variable
173#ifdef NC_DOUBLE
174      ierr=NF_DEF_VAR(nid,"VI Wavenumber",NF_DOUBLE,1,
175     .                          idim_bandsVI,nvarid)
176#else
177      ierr=NF_DEF_VAR(nid,"VI Wavenumber",NF_FLOAT,1,
178     .                          idim_bandsVI,nvarid)
179#endif
180      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 33,
181     .                        "Band mid frequency in the visible")
182      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"units",5,"cm^-1")
183      ierr=NF_ENDDEF(nid) ! Leave NetCDF define mode
184      ! write variable
185#ifdef NC_DOUBLE
186      ierr=NF_PUT_VAR_DOUBLE (nid,nvarid,dble(WNOV))
187#else
188      ierr=NF_PUT_VAR_REAL (nid,nvarid,real(WNOV))
189#endif
190
191c
192!-------------------------------
193! Width of bands in the Visible
194!-------------------------------
195
196      ierr=NF_REDEF (nid) ! Enter NetCDF (re-)define mode
197      ! define variable
198#ifdef NC_DOUBLE
199      ierr=NF_DEF_VAR(nid,"VI Bandwidth",NF_DOUBLE,1,
200     .                          idim_bandsVI,nvarid)
201#else
202      ierr=NF_DEF_VAR(nid,"VI Bandwidth",NF_FLOAT,1,
203     .                          idim_bandsVI,nvarid)
204#endif
205      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 24,
206     .                        "Bandwidth in the visible")
207      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"units",5,"cm^-1")
208      ierr=NF_ENDDEF(nid) ! Leave NetCDF define mode
209      ! write variable
210#ifdef NC_DOUBLE
211      ierr=NF_PUT_VAR_DOUBLE (nid,nvarid,dble(DWNV))
212#else
213      ierr=NF_PUT_VAR_REAL (nid,nvarid,real(DWNV))
214#endif
215c
216c --------------------------
217c   Mesh area
218c --------------------------
219
220      id(1)=idim_rlonv
221      id(2)=idim_rlatu
222
223
224      ierr = NF_REDEF (nid)
225#ifdef NC_DOUBLE
226      ierr = NF_DEF_VAR (nid, "aire", NF_DOUBLE, 2, id,nvarid)
227#else
228      ierr = NF_DEF_VAR (nid, "aire", NF_FLOAT, 2, id,nvarid)
229#endif
230      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9,
231     .                       "Mesh area")
232      ierr = NF_ENDDEF(nid)
233#ifdef NC_DOUBLE
234      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aire)
235#else
236      ierr = NF_PUT_VAR_REAL (nid,nvarid,aire)
237#endif
238
239
240
241      END
Note: See TracBrowser for help on using the repository browser.