source: trunk/LMDZ.TITAN/libf/phytitan/phyredem.F @ 881

Last change on this file since 881 was 815, checked in by slebonnois, 12 years ago

SL: petites modifs Titan et Venus pour tableau controle dans la physique ; pour Titan, petits details lies a raz_date ; modif chemin ioipsl sur gnome ; + elimination d'un warning etrange dans gcm.F

File size: 8.0 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,
6     .           rlat,rlon, tsol,tsoil,
7     .           albedo,
8     .           solsw, sollw,fder,
9     .           radsol,resch4,
10     .           t_ancien)
11
12      USE control_mod
13      use dimphy
14      IMPLICIT none
15c======================================================================
16c Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
17c Objet: Ecriture de l'etat de redemarrage pour la physique
18c======================================================================
19#include "dimensions.h"
20#include "netcdf.inc"
21#include "dimsoil.h"
22#include "clesphys.h"
23#include "tabcontrol.h"
24#include "temps.h"
25c======================================================================
26      CHARACTER*13 fichnom
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 resch4(klon)
36      REAL t_ancien(klon,klev)
37c
38      INTEGER nid, nvarid, idim1, idim2, idim3
39      INTEGER ierr
40      REAL tab_cntrl(length)
41c
42      INTEGER isoil
43      CHARACTER*2 str2
44c
45c     print*,'fichnom',fichnom
46      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
47      IF (ierr.NE.NF_NOERR) THEN
48        write(6,*)' Pb d''ouverture du fichier '//fichnom
49        write(6,*)' ierr = ', ierr
50        CALL ABORT
51      ENDIF
52c
53      ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 28,
54     .                       "Fichier redemarrage physique")
55c
56      ierr = NF_DEF_DIM (nid, "index", length, idim1)
57      ierr = NF_DEF_DIM (nid, "points_physiques", klon, idim2)
58      ierr = NF_DEF_DIM (nid, "horizon_vertical", klon*klev, idim3)
59c
60      ierr = NF_ENDDEF(nid)
61c
62      DO ierr = 1, length
63         tab_cntrl(ierr) = 0.0
64      ENDDO
65      tab_cntrl(1) = dtime
66      tab_cntrl(2) = radpas
67      tab_cntrl(3) = chimpas
68      tab_cntrl(4) = solaire
69      tab_cntrl(5) = 0
70      tab_cntrl(6) = nbapp_rad
71      tab_cntrl(16)= nbapp_chim
72      tab_cntrl(17)= lsinit
73
74      IF( cycle_diurne ) tab_cntrl( 7 ) = 1.
75      IF(   soil_model ) tab_cntrl( 8 ) = 1.
76      IF(     ok_orodr ) tab_cntrl(10 ) = 1.
77      IF(     ok_orolf ) tab_cntrl(11 ) = 1.
78      IF( ok_gw_nonoro ) tab_cntrl(12 ) = 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, "RESCH4", NF_DOUBLE, 1, idim2,nvarid)
245#else
246      ierr = NF_DEF_VAR (nid, "RESCH4", NF_FLOAT, 1, idim2,nvarid)
247#endif
248      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 26,
249     .                        "Reservoir CH4 a la surface")
250      ierr = NF_ENDDEF(nid)
251#ifdef NC_DOUBLE
252      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,resch4)
253#else
254      ierr = NF_PUT_VAR_REAL (nid,nvarid,resch4)
255#endif
256c
257      ierr = NF_REDEF (nid)
258#ifdef NC_DOUBLE
259      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_DOUBLE, 1, idim3,nvarid)
260#else
261      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_FLOAT, 1, idim3,nvarid)
262#endif
263      ierr = NF_ENDDEF(nid)
264#ifdef NC_DOUBLE
265      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,t_ancien)
266#else
267      ierr = NF_PUT_VAR_REAL (nid,nvarid,t_ancien)
268#endif
269c
270      ierr = NF_CLOSE(nid)
271c
272      RETURN
273      END
Note: See TracBrowser for help on using the repository browser.