source: trunk/libf/phytitan/phyredem.F @ 86

Last change on this file since 86 was 3, checked in by slebonnois, 15 years ago

Creation de repertoires:

  • chantiers : pour communiquer sur nos projets de modifs
  • documentation : pour stocker les docs

Ajout de:

  • libf/phytitan : physique de Titan
  • libf/chimtitan: chimie de Titan
  • libf/phyvenus : physique de Venus
File size: 7.6 KB
Line 
1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phyredem.F,v 1.2 2004/06/22 11:45:34 lmdzadmin Exp $
3!
4c
5      SUBROUTINE phyredem (fichnom,dtime,radpas,chimpas,
6     .           rlat,rlon, tsol,tsoil,
7     .           albedo,
8     .           solsw, sollw,fder,
9     .           radsol,
10     .           t_ancien)
11      IMPLICIT none
12c======================================================================
13c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
14c Objet: Ecriture de l'etat de redemarrage pour la physique
15c======================================================================
16#include "dimensions.h"
17#include "dimphy.h"
18#include "netcdf.inc"
19#include "dimsoil.h"
20#include "clesphys.h"
21#include "control.h"
22#include "temps.h"
23c======================================================================
24      CHARACTER*13 fichnom
25      REAL dtime
26      INTEGER radpas,chimpas
27      REAL rlat(klon), rlon(klon)
28      REAL tsol(klon)
29      REAL tsoil(klon,nsoilmx)
30      REAL albedo(klon)
31      real solsw(klon)
32      real sollw(klon)
33      real fder(klon)
34      REAL radsol(klon)
35      REAL t_ancien(klon,klev)
36c
37      INTEGER nid, nvarid, idim1, idim2, idim3
38      INTEGER ierr
39      INTEGER length
40      PARAMETER (length=100)
41      REAL tab_cntrl(length)
42c
43      INTEGER isoil
44      CHARACTER*2 str2
45c
46c     print*,'fichnom',fichnom
47      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
48      IF (ierr.NE.NF_NOERR) THEN
49        write(6,*)' Pb d''ouverture du fichier '//fichnom
50        write(6,*)' ierr = ', ierr
51        CALL ABORT
52      ENDIF
53c
54      ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 28,
55     .                       "Fichier redemarrage physique")
56c
57      ierr = NF_DEF_DIM (nid, "index", length, idim1)
58      ierr = NF_DEF_DIM (nid, "points_physiques", klon, idim2)
59      ierr = NF_DEF_DIM (nid, "horizon_vertical", klon*klev, idim3)
60c
61      ierr = NF_ENDDEF(nid)
62c
63      DO ierr = 1, length
64         tab_cntrl(ierr) = 0.0
65      ENDDO
66      tab_cntrl(1) = dtime
67      tab_cntrl(2) = radpas
68      tab_cntrl(3) = chimpas
69      tab_cntrl(4) = solaire
70      tab_cntrl(5) = 0
71      tab_cntrl(6) = nbapp_rad
72      tab_cntrl(16)= nbapp_chim
73
74      IF( cycle_diurne ) tab_cntrl( 7 ) = 1.
75      IF(   soil_model ) tab_cntrl( 8 ) = 1.
76      IF(     new_oliq ) tab_cntrl( 9 ) = 1.
77      IF(     ok_orodr ) tab_cntrl(10 ) = 1.
78      IF(     ok_orolf ) tab_cntrl(11 ) = 1.
79
80      tab_cntrl(13) = day_end
81      tab_cntrl(14) = annee_ref
82      tab_cntrl(15) = itau_phy
83c
84      ierr = NF_REDEF (nid)
85#ifdef NC_DOUBLE
86      ierr = NF_DEF_VAR (nid, "controle", NF_DOUBLE, 1, idim1,nvarid)
87#else
88      ierr = NF_DEF_VAR (nid, "controle", NF_FLOAT, 1, idim1,nvarid)
89#endif
90      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,
91     .                        "Parametres de controle")
92      ierr = NF_ENDDEF(nid)
93#ifdef NC_DOUBLE
94      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl)
95#else
96      ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
97#endif
98c
99      ierr = NF_REDEF (nid)
100#ifdef NC_DOUBLE
101      ierr = NF_DEF_VAR (nid, "longitude", NF_DOUBLE, 1, idim2,nvarid)
102#else
103      ierr = NF_DEF_VAR (nid, "longitude", NF_FLOAT, 1, idim2,nvarid)
104#endif
105      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,
106     .                        "Longitudes de la grille physique")
107      ierr = NF_ENDDEF(nid)
108#ifdef NC_DOUBLE
109      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlon)
110#else
111      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlon)
112#endif
113c
114      ierr = NF_REDEF (nid)
115#ifdef NC_DOUBLE
116      ierr = NF_DEF_VAR (nid, "latitude", NF_DOUBLE, 1, idim2,nvarid)
117#else
118      ierr = NF_DEF_VAR (nid, "latitude", NF_FLOAT, 1, idim2,nvarid)
119#endif
120      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 31,
121     .                        "Latitudes de la grille physique")
122      ierr = NF_ENDDEF(nid)
123#ifdef NC_DOUBLE
124      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlat)
125#else
126      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlat)
127#endif
128c
129        ierr = NF_REDEF (nid)
130#ifdef NC_DOUBLE
131        ierr = NF_DEF_VAR (nid, "TS", NF_DOUBLE, 1, idim2,nvarid)
132#else
133        ierr = NF_DEF_VAR (nid, "TS", NF_FLOAT, 1, idim2,nvarid)
134#endif
135        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 22,
136     .                        "Temperature de surface")
137        ierr = NF_ENDDEF(nid)
138#ifdef NC_DOUBLE
139        ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tsol(1))
140#else
141        ierr = NF_PUT_VAR_REAL (nid,nvarid,tsol(1))
142#endif
143c
144      DO isoil=1, nsoilmx
145        IF (isoil.LE.99) THEN
146        WRITE(str2,'(i2.2)') isoil
147        ierr = NF_REDEF (nid)
148#ifdef NC_DOUBLE
149        ierr = NF_DEF_VAR (nid, "Tsoil"//str2,NF_DOUBLE,1,idim2,nvarid)
150#else
151        ierr = NF_DEF_VAR (nid, "Tsoil"//str2,NF_FLOAT,1,idim2,nvarid)
152#endif
153        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 24,
154     .                        "Temperature du sol No."//str2)
155        ierr = NF_ENDDEF(nid)
156        ELSE
157        PRINT*, "Trop de couches"
158        CALL abort
159        ENDIF
160#ifdef NC_DOUBLE
161        ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tsoil(1,isoil))
162#else
163        ierr = NF_PUT_VAR_REAL (nid,nvarid,tsoil(1,isoil))
164#endif
165      ENDDO
166c
167        ierr = NF_REDEF (nid)
168#ifdef NC_DOUBLE
169        ierr = NF_DEF_VAR (nid,"ALBE",NF_DOUBLE,1,idim2,nvarid)
170#else
171        ierr = NF_DEF_VAR (nid,"ALBE",NF_FLOAT,1,idim2,nvarid)
172#endif
173        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 18,
174     .                        "albedo de surface")
175        ierr = NF_ENDDEF(nid)
176#ifdef NC_DOUBLE
177      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,albedo(1))
178#else
179      ierr = NF_PUT_VAR_REAL (nid,nvarid,albedo(1))
180#endif
181c
182      ierr = NF_REDEF (nid)
183#ifdef NC_DOUBLE
184      ierr = NF_DEF_VAR (nid, "solsw", NF_DOUBLE, 1, idim2,nvarid)
185#else
186      ierr = NF_DEF_VAR (nid, "solsw", NF_FLOAT, 1, idim2,nvarid)
187#endif
188      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 32,
189     .                        "Rayonnement solaire a la surface")
190      ierr = NF_ENDDEF(nid)
191#ifdef NC_DOUBLE
192      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,solsw)
193#else
194      ierr = NF_PUT_VAR_REAL (nid,nvarid,solsw)
195#endif
196c
197      ierr = NF_REDEF (nid)
198#ifdef NC_DOUBLE
199      ierr = NF_DEF_VAR (nid, "sollw", NF_DOUBLE, 1, idim2,nvarid)
200#else
201      ierr = NF_DEF_VAR (nid, "sollw", NF_FLOAT, 1, idim2,nvarid)
202#endif
203      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 27,
204     .                        "Rayonnement IF a la surface")
205      ierr = NF_ENDDEF(nid)
206#ifdef NC_DOUBLE
207      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,sollw)
208#else
209      ierr = NF_PUT_VAR_REAL (nid,nvarid,sollw)
210#endif
211c
212      ierr = NF_REDEF (nid)
213#ifdef NC_DOUBLE
214      ierr = NF_DEF_VAR (nid, "fder", NF_DOUBLE, 1, idim2,nvarid)
215#else
216      ierr = NF_DEF_VAR (nid, "fder", NF_FLOAT, 1, idim2,nvarid)
217#endif
218      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 14,
219     .                        "Derive de flux")
220      ierr = NF_ENDDEF(nid)
221#ifdef NC_DOUBLE
222      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,fder)
223#else
224      ierr = NF_PUT_VAR_REAL (nid,nvarid,fder)
225#endif
226c
227      ierr = NF_REDEF (nid)
228#ifdef NC_DOUBLE
229      ierr = NF_DEF_VAR (nid, "RADS", NF_DOUBLE, 1, idim2,nvarid)
230#else
231      ierr = NF_DEF_VAR (nid, "RADS", NF_FLOAT, 1, idim2,nvarid)
232#endif
233      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
234     .                        "Rayonnement net a la surface")
235      ierr = NF_ENDDEF(nid)
236#ifdef NC_DOUBLE
237      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,radsol)
238#else
239      ierr = NF_PUT_VAR_REAL (nid,nvarid,radsol)
240#endif
241c
242      ierr = NF_REDEF (nid)
243#ifdef NC_DOUBLE
244      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_DOUBLE, 1, idim3,nvarid)
245#else
246      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_FLOAT, 1, idim3,nvarid)
247#endif
248      ierr = NF_ENDDEF(nid)
249#ifdef NC_DOUBLE
250      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,t_ancien)
251#else
252      ierr = NF_PUT_VAR_REAL (nid,nvarid,t_ancien)
253#endif
254c
255      ierr = NF_CLOSE(nid)
256c
257      RETURN
258      END
Note: See TracBrowser for help on using the repository browser.