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

Last change on this file since 119 was 102, checked in by slebonnois, 14 years ago

SL : corrections et modifications dans phytitan correspondant a celles
faites apres compilation Venus. Titan pas encore compile.

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