source: trunk/LMDZ.GENERIC/libf/phystd/iniwrite_specIR.F @ 1421

Last change on this file since 1421 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.9 KB
Line 
1      SUBROUTINE iniwrite_specIR(nid,idayref)
2
3      use radinc_h, only: L_NSPECTI
4      use radcommon_h, only: WNOI,DWNI
5      use comcstfi_mod, only: rad, omeg, g, mugaz, rcp, daysec, dtphys,
6     &                        pi
7
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,intent(in) :: nid        ! NetCDF file ID
41      INTEGER*4,intent(in) :: 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_bandsIR ! "IR 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, "IR Wavenumber",L_NSPECTI,idim_bandsIR)
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
134      ierr = NF_REDEF (nid)
135#ifdef NC_DOUBLE
136      ierr =NF_DEF_VAR(nid, "latitude", NF_DOUBLE, 1, idim_rlatu,nvarid)
137#else
138      ierr =NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim_rlatu,nvarid)
139#endif
140      ierr =NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
141      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
142     .      "North latitude")
143      ierr = NF_ENDDEF(nid)
144#ifdef NC_DOUBLE
145      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu/pi*180)
146#else
147      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu/pi*180)
148#endif
149c
150c --------------------------
151      ierr = NF_REDEF (nid)
152#ifdef NC_DOUBLE
153      ierr =NF_DEF_VAR(nid,"longitude", NF_DOUBLE, 1, idim_rlonv,nvarid)
154#else
155      ierr = NF_DEF_VAR(nid,"longitude", NF_FLOAT, 1, idim_rlonv,nvarid)
156#endif
157      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
158     .      "East longitude")
159      ierr = NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
160      ierr = NF_ENDDEF(nid)
161#ifdef NC_DOUBLE
162      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv/pi*180)
163#else
164      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv/pi*180)
165#endif
166c
167
168!-------------------------------
169! Number of bands in the IR
170!-------------------------------
171
172      ierr=NF_REDEF (nid) ! Enter NetCDF (re-)define mode
173      ! define variable
174#ifdef NC_DOUBLE
175      ierr=NF_DEF_VAR(nid,"IR Wavenumber",NF_DOUBLE,1,
176     .                          idim_bandsIR,nvarid)
177#else
178      ierr=NF_DEF_VAR(nid,"IR Wavenumber",NF_FLOAT,1,
179     .                          idim_bandsIR,nvarid)
180#endif
181      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 34,
182     .                        "Band mid frequency in the infrared")
183      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"units",5,"cm^-1")
184      ierr=NF_ENDDEF(nid) ! Leave NetCDF define mode
185      ! write variable
186#ifdef NC_DOUBLE
187      ierr=NF_PUT_VAR_DOUBLE (nid,nvarid,dble(WNOI))
188#else
189      ierr=NF_PUT_VAR_REAL (nid,nvarid,real(WNOI))
190#endif
191
192!-------------------------------
193! Width of bands in the IR
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,"IR Bandwidth",NF_DOUBLE,1,
200     .                          idim_bandsIR,nvarid)
201#else
202      ierr=NF_DEF_VAR(nid,"IR Bandwidth",NF_FLOAT,1,
203     .                          idim_bandsIR,nvarid)
204#endif
205      ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 25,
206     .                        "Bandwidth in the infrared")
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(DWNI))
212#else
213      ierr=NF_PUT_VAR_REAL (nid,nvarid,real(DWNI))
214#endif
215c
216c --------------------------
217c  Mesh area and conversion coefficients cov. <-> contra. <--> natural
218
219
220      id(1)=idim_rlonv
221      id(2)=idim_rlatu
222c
223c --------------------------
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      END
Note: See TracBrowser for help on using the repository browser.