source: dynamico_lmdz/aquaplanet/LMDZ5/libf/dynlonlat_phylonlat/phylmd/etat0phys_netcdf.F90 @ 3896

Last change on this file since 3896 was 3896, checked in by ymipsl, 9 years ago

Bug fix when creating etat0 physics files (LMDZ5) :

  • falb_dir is incorrectly initialized
  • falb_dif is not initialized

YM

File size: 19.0 KB
Line 
1MODULE etat0phys
2!
3!*******************************************************************************
4! Purpose: Create physical initial state using atmospheric fields from a
5!          database of atmospheric to initialize the model.
6!-------------------------------------------------------------------------------
7! Comments:
8!
9!    *  This module is designed to work for Earth (and with ioipsl)
10!
11!    *  etat0phys_netcdf routine can access to NetCDF data through subroutines:
12!         "start_init_phys" for variables contained in file "ECPHY.nc":
13!            'ST'     : Surface temperature
14!            'CDSW'   : Soil moisture
15!         "start_init_orog" for variables contained in file "Relief.nc":
16!            'RELIEF' : High resolution orography
17!
18!    * The land mask and corresponding weights can be:
19!      1) computed using the ocean mask from the ocean model (to ensure ocean
20!         fractions are the same for atmosphere and ocean) for coupled runs.
21!         File name: "o2a.nc"  ;  variable name: "OceMask"
22!      2) computed from topography file "Relief.nc" for forced runs.
23!
24!    * Allowed values for read_climoz flag are 0, 1 and 2:
25!      0: do not read an ozone climatology
26!      1: read a single ozone climatology that will be used day and night
27!      2: read two ozone climatologies, the average day and night climatology
28!         and the daylight climatology
29!-------------------------------------------------------------------------------
30!    * There is a big mess with the longitude size. Should it be iml or iml+1 ?
31!  I have chosen to use the iml+1 as an argument to this routine and we declare
32!  internaly smaller fields when needed. This needs to be cleared once and for
33!  all in LMDZ. A convention is required.
34!-------------------------------------------------------------------------------
35
36  USE ioipsl,             ONLY: flininfo, flinopen, flinget, flinclo
37  USE assert_eq_m,        ONLY: assert_eq
38  USE dimphy,             ONLY: klon
39  USE conf_dat_m,         ONLY: conf_dat2d
40  USE phys_state_var_mod, ONLY: zmea, zstd, zsig, zgam, zthe, zpic, zval, z0m, &
41          solsw, radsol, t_ancien, wake_deltat, wake_s,  rain_fall, qsol, z0h, &
42          sollw, rugoro, q_ancien, wake_deltaq, wake_pe, snow_fall, ratqs,w01, &
43    sig1, ftsol, clwcon, fm_therm, wake_Cstar,  pctsrf,  entr_therm,radpas, f0,&
44    zmax0,fevap, rnebcon,falb_dir, wake_fip,    agesno,  detr_therm, pbl_tke,  &
45    phys_state_var_init
46
47  PRIVATE
48  PUBLIC :: etat0phys_netcdf
49
50  include "iniprint.h"
51  include "dimensions.h"
52  include "paramet.h"
53  include "comgeom2.h"
54  include "comconst.h"
55  include "dimsoil.h"
56  include "temps.h"
57  include "clesphys.h"
58  REAL, SAVE :: deg2rad
59  REAL, SAVE, ALLOCATABLE :: tsol(:)
60  INTEGER,            SAVE      :: iml_phys, jml_phys, llm_phys, ttm_phys, fid_phys
61  REAL, ALLOCATABLE,  SAVE      :: lon_phys(:,:), lat_phys(:,:), levphys_ini(:)
62  CHARACTER(LEN=256), PARAMETER :: orofname="Relief.nc", orogvar="RELIEF"
63  CHARACTER(LEN=256), PARAMETER :: phyfname="ECPHY.nc",  psrfvar="SP"
64  CHARACTER(LEN=256), PARAMETER :: qsolvar="CDSW",       tsrfvar="ST"
65
66
67CONTAINS
68
69
70!-------------------------------------------------------------------------------
71!
72SUBROUTINE etat0phys_netcdf(masque, phis)
73!
74!-------------------------------------------------------------------------------
75! Purpose: Creates initial states
76!-------------------------------------------------------------------------------
77! Notes:  1) This routine is designed to work for Earth
78!         2) If masque(:,:)/=-99999., masque and phis are already known.
79!         Otherwise: compute it.
80!-------------------------------------------------------------------------------
81  USE control_mod
82  USE fonte_neige_mod
83  USE pbl_surface_mod
84  USE regr_lat_time_climoz_m, ONLY: regr_lat_time_climoz
85  USE indice_sol_mod
86  USE conf_phys_m, ONLY: conf_phys
87  USE init_ssrf_m, ONLY: start_init_subsurf
88  IMPLICIT NONE
89!-------------------------------------------------------------------------------
90! Arguments:
91  REAL,    INTENT(INOUT) :: masque(:,:) !--- Land mask           dim(iip1,jjp1)
92  REAL,    INTENT(INOUT) :: phis  (:,:) !--- Ground geopotential dim(iip1,jjp1)
93!-------------------------------------------------------------------------------
94! Local variables:
95  CHARACTER(LEN=256) :: modname="etat0phys_netcdf", fmt
96  INTEGER            :: i, j, l, ji, iml, jml
97  LOGICAL            :: read_mask
98  REAL               :: phystep, dummy
99  REAL, DIMENSION(SIZE(masque,1),SIZE(masque,2)) :: masque_tmp
100  REAL, DIMENSION(klon)               :: sn, rugmer, run_off_lic_0, fder
101  REAL, DIMENSION(klon,nbsrf)         :: qsolsrf, snsrf
102  REAL, DIMENSION(klon,nsoilmx,nbsrf) :: tsoil
103
104!--- Arguments for conf_phys
105  LOGICAL :: ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES, callstats
106  REAL    :: solarlong0, seuil_inversion, fact_cldcon, facttemps
107  LOGICAL :: ok_newmicro
108  INTEGER :: iflag_radia, iflag_cldcon, iflag_ratqs
109  REAL    :: ratqsbas, ratqshaut, tau_ratqs
110  LOGICAL :: ok_ade, ok_aie, ok_cdnc, aerosol_couple
111  INTEGER :: flag_aerosol
112  LOGICAL :: flag_aerosol_strat
113  LOGICAL :: new_aod
114  REAL    :: bl95_b0, bl95_b1
115  INTEGER :: read_climoz                        !--- Read ozone climatology
116  REAL    :: alp_offset
117
118  deg2rad= pi/180.0
119  iml=assert_eq(SIZE(masque,1),SIZE(phis,1),TRIM(modname)//" iml")
120  jml=assert_eq(SIZE(masque,2),SIZE(phis,2),TRIM(modname)//" jml")
121
122! Physics configuration
123!*******************************************************************************
124  CALL conf_phys(  ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES,     &
125                   callstats,                                           &
126                   solarlong0,seuil_inversion,                          &
127                   fact_cldcon, facttemps,ok_newmicro,iflag_radia,      &
128                   iflag_cldcon,                                        &
129                   iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,            &
130                   ok_ade, ok_aie, ok_cdnc, aerosol_couple,             &
131                   flag_aerosol, flag_aerosol_strat, new_aod,           &
132                   bl95_b0, bl95_b1,                                    &
133                   read_climoz,                                         &
134                   alp_offset)
135  CALL phys_state_var_init(read_climoz)
136
137!--- Initial atmospheric CO2 conc. from .def file
138  co2_ppm0 = co2_ppm
139
140! Compute ground geopotential, sub-cells quantities and possibly the mask.
141!*******************************************************************************
142  read_mask=ANY(masque/=-99999.); masque_tmp=masque
143  CALL start_init_orog(rlonv, rlatu, phis, masque_tmp)
144  WRITE(fmt,"(i4,'i1)')")iml ; fmt='('//ADJUSTL(fmt)
145  IF(.NOT.read_mask) THEN                       !--- Keep mask form orography
146    masque=masque_tmp
147    IF(prt_level>=1) THEN
148      WRITE(lunout,*)'BUILT MASK :'
149      WRITE(lunout,fmt) NINT(masque)
150    END IF
151    WHERE(   masque(:,:)<EPSFRA) masque(:,:)=0.
152    WHERE(1.-masque(:,:)<EPSFRA) masque(:,:)=1.
153  END IF
154  CALL gr_dyn_fi(1,iml,jml,klon,masque,zmasq) !--- Land mask to physical grid
155
156! Compute tsol and qsol on physical grid, knowing phis on 2D grid.
157!*******************************************************************************
158  CALL start_init_phys(rlonu, rlatv, phis)
159
160! Some initializations.
161!*******************************************************************************
162  sn    (:) = 0.0                               !--- Snow
163  radsol(:) = 0.0                               !--- Net radiation at ground
164  rugmer(:) = 0.001                             !--- Ocean rugosity
165  IF(read_climoz>=1) &                          !--- Ozone climatology
166    CALL regr_lat_time_climoz(read_climoz)
167
168! Sub-surfaces initialization.
169!*******************************************************************************
170  CALL start_init_subsurf(read_mask)
171
172! Write physical initial state
173!*******************************************************************************
174  WRITE(lunout,*)'phystep ',dtvr,iphysiq,nbapp_rad
175  phystep = dtvr * FLOAT(iphysiq)
176  radpas  = NINT (86400./phystep/ FLOAT(nbapp_rad) )
177  WRITE(lunout,*)'phystep =', phystep, radpas
178
179! Init: ftsol, snsrf, qsolsrf, tsoil, rain_fall, snow_fall, solsw, sollw, z0
180!*******************************************************************************
181  DO i=1,nbsrf; ftsol(:,i) = tsol; END DO
182  DO i=1,nbsrf; snsrf(:,i) = sn;   END DO
183  falb_dir(:,:,is_ter) = 0.08
184  falb_dir(:,:,is_lic) = 0.6
185  falb_dir(:,:,is_oce) = 0.5
186  falb_dir(:,:,is_sic) = 0.6
187  falb_dif(:,:,:)=0
188
189  fevap(:,:) = 0.
190  DO i=1,nbsrf; qsolsrf(:,i)=150.; END DO
191  DO i=1,nbsrf; DO j=1,nsoilmx; tsoil(:,j,i) = tsol; END DO; END DO
192  rain_fall  = 0.
193  snow_fall  = 0.
194  solsw      = 165.
195  sollw      = -53.
196  t_ancien   = 273.15
197  q_ancien   = 0.
198  agesno     = 0.
199
200  z0m(:,is_oce) = rugmer(:)
201  z0m(:,is_ter) = MAX(1.0e-05,zstd(:)*zsig(:)/2.0)
202  z0m(:,is_lic) = MAX(1.0e-05,zstd(:)*zsig(:)/2.0)
203  z0m(:,is_sic) = 0.001
204  z0h(:,:)=z0m(:,:)
205
206  fder    = 0.0
207  clwcon  = 0.0
208  rnebcon = 0.0
209  ratqs   = 0.0
210  run_off_lic_0 = 0.0
211  rugoro  = 0.0
212
213! Before phyredem calling, surface modules and values to be saved in startphy.nc
214! are initialized
215!*******************************************************************************
216  dummy            = 1.0
217  pbl_tke(:,:,:)   = 1.e-8
218  zmax0(:)         = 40.
219  f0(:)            = 1.e-5
220  sig1(:,:)        = 0.
221  w01(:,:)         = 0.
222  wake_deltat(:,:) = 0.
223  wake_deltaq(:,:) = 0.
224  wake_s(:)        = 0.
225  wake_cstar(:)    = 0.
226  wake_fip(:)      = 0.
227  wake_pe          = 0.
228  fm_therm         = 0.
229  entr_therm       = 0.
230  detr_therm       = 0.
231
232  CALL fonte_neige_init(run_off_lic_0)
233  CALL pbl_surface_init( fder, snsrf, qsolsrf, tsoil )
234  CALL phyredem( "startphy.nc" )
235
236!  WRITE(lunout,*)'CCCCCCCCCCCCCCCCCC REACTIVER SORTIE VISU DANS ETAT0'
237!  WRITE(lunout,*)'entree histclo'
238  CALL histclo()
239
240END SUBROUTINE etat0phys_netcdf
241!
242!-------------------------------------------------------------------------------
243
244
245!-------------------------------------------------------------------------------
246!
247SUBROUTINE start_init_orog(lon_in,lat_in,phis,masque)
248!
249!===============================================================================
250! Comment:
251!   This routine launch grid_noro, which computes parameters for SSO scheme as
252!   described in LOTT & MILLER (1997) and LOTT(1999).
253!===============================================================================
254  USE grid_noro_m, ONLY: grid_noro
255  IMPLICIT NONE
256!-------------------------------------------------------------------------------
257! Arguments:
258  REAL,    INTENT(IN)    :: lon_in(:), lat_in(:)   ! dim (iml) (jml)
259  REAL,    INTENT(INOUT) :: phis(:,:), masque(:,:) ! dim (iml,jml)
260!-------------------------------------------------------------------------------
261! Local variables:
262  CHARACTER(LEN=256) :: modname
263  INTEGER            :: fid, llm_tmp,ttm_tmp, iml,jml, iml_rel,jml_rel, itau(1)
264  REAL               :: lev(1), date, dt
265  REAL, ALLOCATABLE  :: lon_rad(:), lon_ini(:), lon_rel(:,:), relief_hi(:,:)
266  REAL, ALLOCATABLE  :: lat_rad(:), lat_ini(:), lat_rel(:,:), tmp_var  (:,:)
267  REAL, ALLOCATABLE  :: zmea0(:,:), zstd0(:,:), zsig0(:,:)
268  REAL, ALLOCATABLE  :: zgam0(:,:), zthe0(:,:), zpic0(:,:), zval0(:,:)
269!-------------------------------------------------------------------------------
270  modname="start_init_orog"
271  iml=assert_eq(SIZE(lon_in),SIZE(phis,1),SIZE(masque,1),TRIM(modname)//" iml")
272  jml=assert_eq(SIZE(lat_in),SIZE(phis,2),SIZE(masque,2),TRIM(modname)//" jml")
273
274!--- HIGH RESOLUTION OROGRAPHY
275  CALL flininfo(orofname, iml_rel, jml_rel, llm_tmp, ttm_tmp, fid)
276
277  ALLOCATE(lat_rel(iml_rel,jml_rel),lon_rel(iml_rel,jml_rel))
278  CALL flinopen(orofname, .FALSE., iml_rel, jml_rel, llm_tmp, lon_rel, lat_rel,&
279                lev, ttm_tmp, itau, date, dt, fid)
280  ALLOCATE(relief_hi(iml_rel,jml_rel))
281  CALL flinget(fid, orogvar, iml_rel, jml_rel, llm_tmp, ttm_tmp, 1,1, relief_hi)
282  CALL flinclo(fid)
283
284!--- IF ANGLES ARE IN DEGREES, THEY ARE CONVERTED INTO RADIANS
285  ALLOCATE(lon_ini(iml_rel),lat_ini(jml_rel))
286  lon_ini(:)=lon_rel(:,1); IF(MAXVAL(lon_rel)>pi) lon_ini=lon_ini*deg2rad
287  lat_ini(:)=lat_rel(1,:); IF(MAXVAL(lat_rel)>pi) lat_ini=lat_ini*deg2rad
288
289!--- FIELDS ARE PROCESSED TO BE ON STANDARD ANGULAR DOMAINS
290  ALLOCATE(lon_rad(iml_rel),lat_rad(jml_rel))
291  CALL conf_dat2d(orogvar, lon_ini, lat_ini, lon_rad, lat_rad, relief_hi,.FALSE.)
292  DEALLOCATE(lon_ini,lat_ini)
293
294!--- COMPUTING THE REQUIRED FIELDS USING ROUTINE grid_noro
295  WRITE(lunout,*)
296  WRITE(lunout,*)'*** Compute parameters needed for gravity wave drag code ***'
297
298!--- ALLOCATIONS OF SUB-CELL SCALES QUANTITIES
299  ALLOCATE(zmea0(iml,jml),zstd0(iml,jml)) !--- Mean orography and std deviation
300  ALLOCATE(zsig0(iml,jml),zgam0(iml,jml)) !--- Slope and nisotropy
301  ALLOCATE(zthe0(iml,jml))                !--- Highest slope orientation
302  ALLOCATE(zpic0(iml,jml),zval0(iml,jml)) !--- Peaks and valley heights
303
304!--- CALL OROGRAPHY MODULE TO COMPUTE FIELDS
305  CALL grid_noro(lon_rad,lat_rad,relief_hi,lon_in,lat_in,phis,zmea0,zstd0,     &
306                                      zsig0,zgam0,zthe0,zpic0,zval0,masque)
307  phis = phis * 9.81
308  phis(iml,:) = phis(1,:)
309  DEALLOCATE(relief_hi,lon_rad,lat_rad)
310
311!--- PUT QUANTITIES TO PHYSICAL GRID
312  CALL gr_dyn_fi(1,iml,jml,klon,zmea0,zmea); DEALLOCATE(zmea0)
313  CALL gr_dyn_fi(1,iml,jml,klon,zstd0,zstd); DEALLOCATE(zstd0)
314  CALL gr_dyn_fi(1,iml,jml,klon,zsig0,zsig); DEALLOCATE(zsig0)
315  CALL gr_dyn_fi(1,iml,jml,klon,zgam0,zgam); DEALLOCATE(zgam0)
316  CALL gr_dyn_fi(1,iml,jml,klon,zthe0,zthe); DEALLOCATE(zthe0)
317  CALL gr_dyn_fi(1,iml,jml,klon,zpic0,zpic); DEALLOCATE(zpic0)
318  CALL gr_dyn_fi(1,iml,jml,klon,zval0,zval); DEALLOCATE(zval0)
319
320
321END SUBROUTINE start_init_orog
322!
323!-------------------------------------------------------------------------------
324
325
326!-------------------------------------------------------------------------------
327!
328SUBROUTINE start_init_phys(lon_in,lat_in,phis)
329!
330!===============================================================================
331! Purpose:   Compute tsol and qsol, knowing phis.
332!===============================================================================
333  IMPLICIT NONE
334!-------------------------------------------------------------------------------
335! Arguments:
336  REAL,    INTENT(IN) :: lon_in(:),  lat_in(:)       ! dim (iml) (jml2)
337  REAL,    INTENT(IN) :: phis(:,:)                   ! dim (iml,jml)
338!-------------------------------------------------------------------------------
339! Local variables:
340  CHARACTER(LEN=256) :: modname
341  REAL               :: date, dt
342  INTEGER            :: iml, jml, jml2, itau(1)
343  REAL, ALLOCATABLE  :: lon_rad(:), lon_ini(:), var_ana(:,:)
344  REAL, ALLOCATABLE  :: lat_rad(:), lat_ini(:)
345  REAL, ALLOCATABLE  :: ts(:,:), qs(:,:)
346!-------------------------------------------------------------------------------
347  modname="start_init_phys"
348  iml=assert_eq(SIZE(lon_in),SIZE(phis,1),TRIM(modname)//" iml")
349  jml=SIZE(phis,2); jml2=SIZE(lat_in)
350
351  WRITE(lunout,*)'Opening the surface analysis'
352  CALL flininfo(phyfname, iml_phys, jml_phys, llm_phys, ttm_phys, fid_phys)
353  WRITE(lunout,*) 'Values read: ',  iml_phys, jml_phys, llm_phys, ttm_phys
354
355  ALLOCATE(lat_phys(iml_phys,jml_phys),lon_phys(iml_phys,jml_phys))
356  ALLOCATE(levphys_ini(llm_phys))
357  CALL flinopen(phyfname, .FALSE., iml_phys, jml_phys, llm_phys,              &
358                lon_phys,lat_phys,levphys_ini,ttm_phys,itau,date,dt,fid_phys)
359
360!--- IF ANGLES ARE IN DEGREES, THEY ARE CONVERTED INTO RADIANS
361  ALLOCATE(lon_ini(iml_phys),lat_ini(jml_phys))
362  lon_ini(:)=lon_phys(:,1); IF(MAXVAL(lon_phys)>pi) lon_ini=lon_ini*deg2rad
363  lat_ini(:)=lat_phys(1,:); IF(MAXVAL(lat_phys)>pi) lat_ini=lat_ini*deg2rad
364
365  ALLOCATE(var_ana(iml_phys,jml_phys),lon_rad(iml_phys),lat_rad(jml_phys))
366  CALL get_var_phys(tsrfvar,ts)                   !--- SURFACE TEMPERATURE
367  CALL get_var_phys(qsolvar,qs)                   !--- SOIL MOISTURE
368  CALL flinclo(fid_phys)
369  DEALLOCATE(var_ana,lon_rad,lat_rad,lon_ini,lat_ini)
370
371!--- TSOL AND QSOL ON PHYSICAL GRID
372  ALLOCATE(tsol(klon))
373  CALL gr_dyn_fi(1,iml,jml,klon,ts,tsol)
374  CALL gr_dyn_fi(1,iml,jml,klon,qs,qsol)
375  DEALLOCATE(ts,qs)
376
377CONTAINS
378
379!-------------------------------------------------------------------------------
380!
381SUBROUTINE get_var_phys(title,field)
382!
383!-------------------------------------------------------------------------------
384  IMPLICIT NONE
385!-------------------------------------------------------------------------------
386! Arguments:
387  CHARACTER(LEN=*),  INTENT(IN)    :: title
388  REAL, ALLOCATABLE, INTENT(INOUT) :: field(:,:)
389!-------------------------------------------------------------------------------
390! Local variables:
391  INTEGER :: tllm
392!-------------------------------------------------------------------------------
393  SELECT CASE(title)
394    CASE(psrfvar);         tllm=0
395    CASE(tsrfvar,qsolvar); tllm=llm_phys
396  END SELECT
397  IF(ALLOCATED(field)) RETURN
398  ALLOCATE(field(iml,jml)); field(:,:)=0.
399  CALL flinget(fid_phys,title,iml_phys,jml_phys,tllm,ttm_phys,1,1,var_ana)
400  CALL conf_dat2d(title, lon_ini, lat_ini, lon_rad, lat_rad, var_ana, .TRUE.)
401  CALL interp_startvar(title, .TRUE., lon_rad, lat_rad, var_ana,               &
402                                      lon_in,  lat_in,  field)
403
404END SUBROUTINE get_var_phys
405!
406!-------------------------------------------------------------------------------
407!
408END SUBROUTINE start_init_phys
409!
410!-------------------------------------------------------------------------------
411
412
413!-------------------------------------------------------------------------------
414!
415SUBROUTINE interp_startvar(nam,ibeg,lon,lat,vari,lon2,lat2,varo)
416!
417!-------------------------------------------------------------------------------
418  USE inter_barxy_m, ONLY: inter_barxy
419  IMPLICIT NONE
420!-------------------------------------------------------------------------------
421! Arguments:
422  CHARACTER(LEN=*), INTENT(IN)  :: nam
423  LOGICAL,          INTENT(IN)  :: ibeg
424  REAL,             INTENT(IN)  :: lon(:), lat(:)   ! dim (ii) (jj)
425  REAL,             INTENT(IN)  :: vari(:,:)        ! dim (ii,jj)
426  REAL,             INTENT(IN)  :: lon2(:), lat2(:) ! dim (i1) (j2)
427  REAL,             INTENT(OUT) :: varo(:,:)        ! dim (i1) (j1)
428!-------------------------------------------------------------------------------
429! Local variables:
430  CHARACTER(LEN=256) :: modname
431  INTEGER            :: ii, jj, i1, j1, j2
432  REAL, ALLOCATABLE  :: vtmp(:,:)
433!-------------------------------------------------------------------------------
434  modname="interp_startvar"
435  ii=assert_eq(SIZE(lon), SIZE(vari,1),TRIM(modname)//" ii")
436  jj=assert_eq(SIZE(lat), SIZE(vari,2),TRIM(modname)//" jj")
437  i1=assert_eq(SIZE(lon2),SIZE(varo,1),TRIM(modname)//" i1")
438  j1=SIZE(varo,2); j2=SIZE(lat2)
439  ALLOCATE(vtmp(i1-1,j1))
440  IF(ibeg.AND.prt_level>1) THEN
441    WRITE(lunout,*)"--------------------------------------------------------"
442    WRITE(lunout,*)"$$$ Interpolation barycentrique pour "//TRIM(nam)//" $$$"
443    WRITE(lunout,*)"--------------------------------------------------------"
444  END IF
445  CALL inter_barxy(lon, lat(:jj-1), vari, lon2(:i1-1), lat2, vtmp)
446  CALL gr_int_dyn(vtmp, varo, i1-1, j1)
447
448END SUBROUTINE interp_startvar
449!
450!-------------------------------------------------------------------------------
451
452
453END MODULE etat0phys
454!
455!*******************************************************************************
456
Note: See TracBrowser for help on using the repository browser.