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
RevLine 
[3]1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/phyredem.F,v 1.2 2004/06/22 11:45:34 lmdzadmin Exp $
3!
4c
[815]5      SUBROUTINE phyredem (fichnom,
[3]6     .           rlat,rlon, tsol,tsoil,
7     .           albedo,
8     .           solsw, sollw,fder,
[175]9     .           radsol,resch4,
[3]10     .           t_ancien)
[97]11
12      USE control_mod
[102]13      use dimphy
[3]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"
[815]23#include "tabcontrol.h"
[3]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)
[175]35      real resch4(klon)
[3]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
[815]72      tab_cntrl(17)= lsinit
[3]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.
[102]78      IF( ok_gw_nonoro ) tab_cntrl(12 ) = 1.
[3]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
[175]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
[3]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.