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

Last change on this file since 966 was 965, checked in by emillour, 12 years ago

Common dynamics and generic/universal GCM:

  • LMDZ.COMMON: minor bug fix on the computation of physics mesh area in gcm.F
  • LMDZ.UNIVERSAL: missing clean initialization of tab_cntrl(:) array in phyredem.F90
  • LMDZ.GENERIC: minor bug fix in hydrol.F90, only output runoff if it is used. Update output routines so that all outputs files (stats, diagfi.nc, diagsoil.nc, diagspecIR.nc and diagspecVI.nc) can be generated when running LMDZ.UNIVERSAL in MPI mode.

EM

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