source: branches/iLoveclim/SOURCES/3D-physique-gen_mod.f90 @ 146

Last change on this file since 146 was 146, checked in by aquiquet, 7 years ago

Grisli-iLoveclim branch: merged to trunk at revision 145

File size: 30.2 KB
Line 
1!> \file 3D-physique-gen_mod.f90
2!! Module de declaration des variables generales
3!! de la physique du modele.
4!<
5
6!> \namespace module3D_phy
7!! Module de declaration des variables generales
8!! de la physique du modele.
9!! \author CatRitz
10!! \date 30 juin 2007
11!! @note Used module
12!! @note   - use geography
13!! @note   - use runparam
14!<
15
16module MODULE3D_phy
17
18  ! declaration des variables
19  ! implicit none
20  use geography   ! indirectement donne acces au nx,ny, appropries
21  use runparam    ! donne acces a runname, dirout, tbegin,tend
22  use param_phy_mod
23
24  implicit none
25  real, parameter :: PI = 3.1415927
26
27
28  !   **** integer declaration  *************************************
29
30  integer ::  I,J                       !< I selon x, j selon y,
31  integer ::  k,l                       !< k vertical
32  integer ::  ispinup                   !< pour les differentes etapes du spinup
33  integer ::  I1,J1,I_1,J_1,I2,J2       !<
34  integer ::  NI,NJ,NXX,NYY             !< divers entiers de travail en general
35  integer ::  NZZ                       !< Total number of vertical grid points
36  integer ::  err                       !< pour l'allocation des tableaux
37  integer ::  igrdline                  !< si 1 fixe la position en jouant sur la fusion shelf
38  integer ::  ibmelt_inv                !< si 1 inversion du bmelt (avec igrdline=1)
39  integer ::  i_resolmeca               !< defini le type d'association SIA-L1
40  integer ::  iter_beta                 !< pour la determination du frottement
41  integer ::  ICOUPLE                   !<
42  integer ::  IMARGIN                   !< 
43  integer ::  ICOMPTEUR                 !< reprise fichier cptr
44  integer ::  IOUT                      !< type de fichier de sortie pour reprise
45  integer ::  iglen                     !< compteur pour la boucle flowlaw
46  integer ::  ISYNCHRO                  !< synchronisation pas de temps dt et dtt
47  integer ::  LOIGLISS                  !< permet de choisir la loi de glissement
48  integer ::  Schoof                    !< 0 : pas de flux de Schoof , 1 : flux de Schoof a la grounding line
49  !integer ::  NYEAR                    !< number of months in 1 year, st. dev. for temp *)
50  integer ::  NTMAX                     !<
51!  integer ::  NDAY                      !<
52  integer ::  NP                        !<
53  real ::  NDISP                        !< sortie courte (temps)
54  !integer ::  NTRACE                   !< sortie de traces 1=oui, 0=non
55 
56  integer ::  NICE                      !<
57  integer ::  NINSTAB                   !<
58  integer ::  NUMFUS                    !<
59  integer ::  NUMMARG                   !<
60  integer ::  BANDWD                    !<
61  integer ::  TIMECG                    !<
62  integer ::  IND                       !<
63  integer ::  IFT                       !<
64  integer ::  ITEMP                     !<
65  integer ::  ITBOOST                   !<
66  ! integer ::  NBLIG                   ! ??????????????????????????????
67  integer ::  ndebug                    !< pour faire des sorties de debug a plusieurs pas de temps
68  integer ::  ndebug_max                !< pour faire des sorties de debug a plusieurs pas de temps
69  !integer, dimension(NX,NY) ::  LIGU    !< numero de ligne de U dans remplidom
70  !integer, dimension(NX,NY) ::  LIGV    !< numero de ligne de V dans remplidom
71
72  integer :: nombre_profils !< nombre de profils de la calotte
73  integer :: itracer                    ! pour ecrire les recovery avec ou sans les tableaux traceurs
74
75  !     ************ common des scalaires *************************
76  real :: alpha_drag                    !< exposant non linearite, dragging dans la namelist
77  real :: exp_alpha                     !< exposant dans la loi dragging
78
79
80  real ::  A1                           !<
81  real ::  A2                           !<
82  real ::  ALT                          !<
83  real ::  ATEST                        !<
84  real ::  ACOUP                        !<
85  real ::  BEDCT                        !<
86
87  real :: coefbmshelf                   !< coef permettant de faire varier la fusion basale :
88  !< 3 dimensions pour les 3 bassins oceaniques de Climber???
89
90  real ::  cf                           !< coefficient loi frottement
91  ! real ::  CSI                          ! proportion of melted water that can refreeze *)
92  ! real ::  Cice                         ! melting factors for ice
93  ! real ::  Csnow                        ! melting factors for snow
94
95  real ::  CL                           !< specific latent heat of fusion of ice J/Kg 
96  real ::  DT                           !< pas de temps court
97  real ::  DTT                          !< pas de temps long
98  real ::  DTMIN                        !< pas de temps mini
99  !real ::  DTP                          !< integrating step for positive degree days (degrees)
100  !! Ne sert plus a rien avec param_phy_mod real ::  DICE                         !< = RO/ROW
101  real ::  DA                           !<
102  real ::  DX1                          !< 1/dx
103  real ::  DTDX                         !< dt/dx
104  real ::  dtdx2                        !< dt/dx**2
105  !! Ne sert plus a rien avec param_phy_mod real ::  D00                          !< = RO**3*G**3
106  real ::  DMX1                         !<
107  real ::  DMY1                         !<
108  real ::  DMX2                         !<
109  real ::  DMY2                         !<
110  real ::  DTMAX                        !<
111  real ::  EW                           !<
112  real ::  FLU                          !<
113  !! Ne sert plus a rien avec param_phy_mod real ::  G                            !< gravite
114  real ::  GAMMA                        !<
115  real ::  GLACLOST                     !<
116  real ::  HMAX                         !< epasisseur de glace max
117  real ::  HMEAN                        !< epasisseur de glace moyenne
118  real,parameter :: Hmin=1.001          !< Hmin pour etre considere comme point ice 
119  real ::  HWATERMAX                    !< hauteur d'eau basale maximum dans le sediment
120  real ::  HWATSTREAM                   !< seuil min. d'eau basale (hwater) pour ice stream
121  real ::  HLIM                         !<
122  real ::  coefbmax                     !< fautcteur de normalisation pour l'influence de l'eau
123  real ::  ff                           !< coefficient de la loi de frottement solide
124  real ::  ff_stream                    !< coefficient de la loi de frottement solide pour les ice-streams
125  ! real ::  PY                           ! ct for PDD calculation
126  real ::  PYY                          !<
127!  real ::  PSOLID                       !< temp limit between liquid and solid precip
128  ! real ::  PDDCT                        ! ct for PDD calculation     
129  real ::  PDSI                         !<
130  real ::  PDS                          !<
131  real ::  RGAS                         !< gas constant (J/mol/K)
132  !! Ne sert plus a rien avec param_phy_mod real ::  ROM                          !< density of mantle
133  !! Ne sert plus a rien avec param_phy_mod real ::  ROW                          !< densities of ocean water
134  !! Ne sert plus a rien avec param_phy_mod real ::  ROFRESH                      !< density of fresh water
135  !! Ne sert plus a rien avec param_phy_mod real ::  ROFRESHG                     !< = ROFRESH*G
136  !! Ne sert plus a rien avec param_phy_mod real ::  RO                           !< densities of ice
137  !! Ne sert plus a rien avec param_phy_mod real ::  ROG                          !< = RO*G   (glace)
138  !! Ne sert plus a rien avec param_phy_mod real ::  ROWG                         !< = ROW*G  (ocean)
139  !! Ne sert plus a rien avec param_phy_mod real ::  ROMG                         !< = ROM*G  (asthenosphere)
140  real ::  SECYEAR                      !< for relation an/seconds
141  !real ::  S22                          ! ct for PDD calculation
142  real,target ::  sealevel                     !< niveau des mers
143  ! real ::  SIGMA                        ! variabilite Tday
144  real ::  SURF                         !<
145  real ::  STEP                         !<
146!  real ::  SIF                          !<
147!  real ::  SUMM                         !<
148  real ::  SIMAX                        !<
149  real ::  SPHI                         !<
150!  real ::  TEMPGRAD                     !< atmospheric temperature gradient (annual)
151!  real ::  TEMPGRJUL                    !< atmospheric temperature gradient (july)
152  real (kind=kind(0.d0)) ::  TIME       !< temps : en double precision
153  real ::  TAFOR                        !< temperature forcing : annual
154  real ::  TJFOR                        !< temperature forcing : july
155!  real ::  TEMP                         !<
156  real ::  TESTDIAG                     !< for time step calculation (icethick)
157  real ::  V_limit                      !< vitesse maxi (limitateur de flux pour conserv masse)
158  real ::  TJF                          !<
159  real ::  TSF                          !<
160  real ::  TII                          !<
161  real ::  TJJ                          !<
162  real ::  TEVOL                        !<
163  real ::  UZ1                          !<
164  real ::  UZ2                          !<
165  real ::  UZ3                          !<
166  real ::  VOL                          !<
167  real ::  VVX                          !<
168  real ::  VVY                          !<
169  real ::  WDOTMEAN                     !<
170  real ::  X1                           !<
171  real ::  XLCENT                       !<
172  real ::  XDMIN                        !<
173  real ::  XC                           !<
174  real ::  YDMIN                        !<
175  real ::  YLATREF                      !<
176  real ::  YC                           !<
177  real ::  ZI                           !<
178  real ::  U                            !<
179  real ::  TTETA                        !<
180  real ::  LAMBDA                       !<
181  real ::  G1                           !<
182  real ::  XI                           !<
183  real ::  XIS                          !<
184  real ::  ERFXI                        !<
185  real ::  ERFXIS                       !<
186  real ::  INTDAWS                      !<
187  real ::  WSP                          !<
188  real ::  gradsurf                     !<
189  real ::  U1                           !<
190  real ::  U2                           !<
191  real ::  KAP                          !<
192  real ::  G1NEW                        !<
193  real ::  neffgz                       !<
194  real ::  neffratio                    !<seuil (% de H) sur neffmxy pour passage en stream
195  real ::  toblim                       !<
196  real ::  moteurmax                    !<
197  real ::  betamax                      !< (Pa) frottement maxi sous les streams
198  real ::  deltaacc                     !<
199  real ::  pvimin                       !< valeur de pvi pour les noeuds fictifs
200  real ::  test_iter_diag               !< test sur les vitesses pour iterations diagnostiques
201  real :: water_bilan                   !< bilan d'eau sur la calotte
202
203  !     ************** common des caracteres **************
204  !character(len=8), dimension(NPL) :: VARNAME  !
205  character(len=320) :: reprcptr                ! nom du fichier de reprise CPTR
206
207  !     *************** common des tableaux a 1 dimension *****
208  real,dimension(nz) :: e               !< vertical coordinate in ice, scaled to H zeta
209
210
211  real,dimension(NZ) :: CDE             !<
212  real,dimension(NZ) :: W16             !<  pour sorties eismint
213  real,dimension(NZ) :: W24             !<  pour sorties eismint
214  real,dimension(NZ) :: UZCOMPLETE      !<  pour sorties eismint (vitesse vert. non reduite)
215
216!  real,dimension(365) :: TT             !< air temperature yearly cycle, for PDD
217 
218  real,dimension(NX) :: FLUX            !<
219  real,dimension(8) :: AFLAG            !<
220  real,dimension(2*nx*ny) :: SAV        !<
221
222  !    ************* common des tableaux a deux dimensions ******
223
224  integer,dimension(nx,ny) :: FRONT     !< point d'un shelf situe sur le front
225  integer,dimension(nx,ny) :: FRONTFACEX!< type de front sur les faces x
226  integer,dimension(nx,ny) :: FRONTFACEY!< type de front sur les faces y
227  integer,dimension(nx,ny) :: gr_line_schoof ! points ou on impose le flux de schoof (pour sorties)
228  integer,dimension(nx,ny) :: gr_line   !< points grounding line pour les sorties
229  integer,dimension(nx,ny) :: ICE       !< presence de glace au point considere,
230  !< seuil 0 si pose, 1 si flottant
231  integer,dimension(nx,ny) :: MASQUE_BMSHELF !< masque pour determiner a quel bassin oceanique
232  !< appartiennent les points de la grille
233  integer,dimension(nx,ny) :: MK0          !< masks (ice sheet, max, above water, below water, 1)
234  integer,dimension(nx,ny) :: Mk_init      !< initial mask (with islands, outcrops, ...
235  integer,dimension(nx,ny) :: MK           !< masks (ice sheet, max, above water, below water, 1)
236  integer,dimension(nx,ny) :: M_sealev     !< masks for sea level calculation (present ice sheet)
237  integer,dimension(nx,ny) :: MNEG         !< masks (ice sheet, max, above water, below water, 1)
238  integer,dimension(nx,ny) :: IBASE     !< type de base (froide, temperee)
239
240  real,dimension(nx,ny),target :: ACC          !< Accumulation  'o'
241  real,dimension(nx,ny) :: ABL          !< Ablation  'o'  negative quand perte
242  real,dimension(nx,ny) :: ABLBORD      !< Ablation dans les zones non englacees
243  real,dimension(nx,ny) :: ablbord_dtt  !< Ablation sur le bord de la calotte (flux de glace inférieur à ablation sur le bord) sur dtt
244  real,dimension(nx,ny) :: ACQUA        !< Surface des surfaces en eau
245  real,dimension(nx,ny) :: B            !< Altitude de la base de la glace  'o'
246  real,dimension(nx,ny) :: B_sealev     !< Altitude de la base de la glace pour le
247  !< calcul du nivx de la mer (/present)
248  real,dimension(nx,ny) :: BDOT         !< derivee de B / t
249  real,dimension(nx,ny) :: B1           !<
250  real,dimension(nx,ny) :: BSOC0        !< ice free bedrock
251  real,dimension(nx,ny) :: betamx       !< coefficient beta du frottement basal
252  ! betamx=cf*neffmx et tobmx=betamx*uxbar
253  real,dimension(nx,ny) :: betamy       !< coefficient beta du frottement basal
254  ! betamy=cf*neffmy et tobmy=betamy*uybar
255  !hassine
256  real, dimension(nx,ny) :: beta_centre !< beta on major node (average)
257!afq for CONSEAU  real (kind = 8),dimension(nx,ny) :: calvingGRIS
258!afq for CONSEAU  real (kind = 8),dimension(nx,ny),target :: calvin_GRIS ! calving flux[m3/s] given to CLIO
259  real (kind = 8),dimension(nx,ny,20),target :: bmshelfCLIO  ! basal melting given by CLIO 
260  real, dimension(nx,ny) :: coef_drag   !< coefficient de la loi de friction non lineaire : depend de la valeur de alpha_drag
261                                        !< si alpha_drag = 1, coef_drag = drag_centre 
262  real, dimension(nx,ny) :: betamax_2d  !< (Pa) frottement maxi sous les streams
263  !
264  real,dimension(nx,ny),target :: BM           !< mass balance   'o'
265  real,dimension(nx,ny) :: BMELT        !< basal melting  'o'
266  real,dimension(nx,ny) :: CORRBMELT    !< correction du basal melting  'o'
267  real,dimension(nx,ny) :: HWATER       !< hauteur d'eau basale dans le sediment
268  real,dimension(nx,ny) :: COEFMXBMELT  !<
269  real,dimension(nx,ny) :: COEFMYBMELT  !<
270  real,dimension(nx,ny) :: CALV         !< calving
271 
272  !real,dimension(:,:,:),allocatable :: DDX  ! pour le calcul de UX
273  !real,dimension(:,:,:),allocatable :: DDY  ! pour le calcul de UY
274  real,dimension(nx,ny) :: DDBX         !< UBX/(-SDX) '>'
275  real,dimension(nx,ny) :: DDBY         !< UBY/(-SDY) '^'
276  real,dimension(nx,ny) :: Diffmx       !< partie diffusive en x
277  real,dimension(nx,ny) :: Diffmy       !< partie diffusive en y
278
279  !REAL,dimension(nx,ny) :: DPHIX        !< ROG*HMX**2  '>'
280  !REAL,dimension(nx,ny) :: DPHIY        !< ROG*HMY**2  '^'
281  real,dimension(nx,ny) :: DHDT         !< derive lagrangienne de l'epaisseur 'o'
282  real,dimension(nx,ny) :: DIF1         !< UZR(I,J,1)-BM(I,J)
283  real,dimension(nx,ny) :: DIF2         !< UZR(I,J,1)-BMELT(I,J)
284  real,dimension(nx,ny) :: DIFT         !< pour sorties eismint
285  real,dimension(nx,ny) :: DIVU         !< divergence de UH
286  ! real,dimension(nx,ny) :: DISTCENT     !
287  real,dimension(nx,ny) :: ELA          !< Equilibrium line altitude, for mass balance
288  real,dimension(nx,ny) :: epsxx     !< vitesse de deformation selon x
289  real,dimension(nx,ny) :: epsyy     !< vitesse de deformation selon y
290  real,dimension(nx,ny) :: epsxy     !< vitesse de deformation selon xy
291  real,dimension(nx,ny) :: eps       !< vitesse de deformation (invariant)
292
293  real,dimension(nx,ny) :: FT           !< proportion of year with air temp below 2C
294  real,dimension(nx,ny) :: FROTMX       !< beta coefficient used in the remplimat routine
295  real,dimension(nx,ny) :: FROTMY       !<
296  real,dimension(nx,ny) :: GHF          !< geothermal heat flux J/m2/a 'o'
297  real,dimension(nx,ny) :: GHF0         !< geothermal heat flux J/m2/a 'o'
298  real,dimension(nx,ny),target :: H            !< ice thickness  'o'
299  real,dimension(nx,ny) :: H0           !< initial ice thickness, must be initialized before init_iso
300
301! dimensionnements qui etaient avant dans H_prescribe
302  real,dimension(nx,ny)    :: Hp           !< H value if prescribed
303  real,dimension(nx,ny)    :: Hp0          !< H value if prescribed (reference value)
304  real,dimension(nx,ny)    :: Delta_H      !< Delta_H value if prescribed
305  integer,dimension(nx,ny) :: i_delta_H    !< 1 if Delta_H is prescribed on this node, else 0
306  integer,dimension(nx,ny) :: i_Hp         !< 1 if H is prescribed on this node, else 0
307  integer,dimension(nx,ny) :: i_Hp0        !< i_hp mask reference value does not change with time
308  integer, dimension(nx,ny) :: imx_diag    !< masque pour eq elliptique 
309  integer, dimension(nx,ny) :: imy_diag    !< masque pour eq elliptique
310  integer,dimension(nx,ny) :: MK_gl0       !< mask grounding line initial
311  integer,dimension(nx,ny) :: MK_flot0     !< mask float initial
312
313
314  real,dimension(nx,ny) :: H_sealev     !< ice thickness for sea level calculation        ! (present ice sheet)
315  real,dimension(nx,ny) :: HDOT         !< ice thickness derivee / t
316  real,dimension(nx,ny) :: HDOTWATER
317  real,dimension(nx,ny) :: H1           !<
318  real,dimension(nx,ny) :: HMX          !< ice thickness moy selon x '>'
319  real,dimension(nx,ny) :: HMY          !< ice thickness moy selon y '^'
320  real,dimension(nx,ny) :: HDOTPREC     !<
321  real,dimension(nx,ny) :: HDOTRAP      !<
322
323  real,dimension(nx,ny) :: KOND         !< basale hydro. conductivity 'o'
324  real,dimension(nx,ny) :: PDD          !< Positive degree day
325  real,dimension(nx,ny) :: PRECIP       !< precipitation
326  real,dimension(nx,ny) :: PRECIP0      !< initial precipitation  (used in 'heminord')
327  real,dimension(nx,ny) :: PHID         !< flux de chaleur lie a la deformation et glissement basal
328  real,dimension(nx,ny) :: chalgliss_maj !< chaleur de glissement seulement
329  real,dimension(nx,ny) :: PWATER       !< basal water pressure
330  real,dimension(nx,ny) :: pgx,pgy      !< hydro. potential gradient  / x '>' and / y '^'
331  real,dimension(nx,ny) :: phiWx,phiWy  !< flux d'eau sous glaciaire  / x '>' and / y '^'
332  real,dimension(nx,ny) :: NEFFMX       !< pression effective '>'
333  real,dimension(nx,ny) :: NEFFMY       !< pression effective '^'
334!afq for CONSEAU  real(kind=8),dimension(nx,ny),target :: RUNOF_OC ! Continental runoff (grounded part)
335!afq for CONSEAU  real(kind=8),dimension(nx,ny),target :: BMELT_OC ! Shelf runoff (floating part)
336  real,dimension(nx,ny) :: TOBMX        !< cisaillement basal '>'
337  real,dimension(nx,ny) :: TOBMY        !< cisaillement basal '^'
338  real,dimension(nx,ny) :: SW           !< for bedrock isostasy
339  real,dimension(nx,ny),target :: S            !< altitude of ice sheet surface
340  real,dimension(nx,ny) :: S_sealev     !< altitude of ice sheet surface for sea
341  !< level calculation (present ice sheet)
342  real,dimension(nx,ny) :: SLOPE        !< slope 'o'
343  real,dimension(nx,ny) :: SDX          !< slope derivee / x '>'
344  real,dimension(nx,ny) :: SDY          !< slope derivee / y '^'
345  real,dimension(nx,ny) :: SDXMY        !< slope selon x moy selon y '^' remplace SDMX
346  real,dimension(nx,ny) :: SDYMX        !< slope selon y moy selon x '>' remplace SDMY
347  real,dimension(nx,ny) :: SLOPE2mx     !< = Sdx**2 + Sdymx**2 '>'
348  real,dimension(nx,ny) :: SLOPE2my     !< = Sdy**2 + Sdxmy**2 '^'
349  real,dimension(nx,ny) :: S0           !< altitude actuelle de la surface
350  real,dimension(nx,ny) :: slv          !< niveau de flottaison (sealevel et lakes)
351  real,dimension(nx,ny),target :: TJULY        !< Ground air temperature July
352  real,dimension(nx,ny),target :: TANN         !< Ground air temperature annual
353  real,dimension(nx,ny,12) :: Tmois     !< Ground air temperature monthly
354  real,dimension(nx,ny,12) :: Pmois     !< Liquid precipitation  monthly
355  real,dimension(nx,ny) :: TSHELF       !< temperature des shelfs pour viscosite
356  real,dimension(nx,ny) :: TJ0          !< initial air temperature at sea level July
357!  real,dimension(nx,ny) :: TA0          !< initial air temperature at sea level annual
358  real,dimension(nx,ny) :: TAUB         !< basal shear stress (for output)
359  real,dimension(nx,ny) :: TAUSHELF     !< effective stress in ice shelves (vertical av.)
360  real,dimension(nx,ny) :: TS           !< surface ice temperature  'o'
361  real,dimension(nx,ny) :: TB           !< basal ice temperature  'o'
362  real,dimension(nx,ny) :: TG           !< degrees above melting point at the base
363  real,dimension(nx,ny) :: TBDOT        !< variation in time of basal temperature
364  real,dimension(nx,ny) :: UZK          !< vertical velocity at the ice surface (kinematic boundary)
365  real,dimension(nx,ny) :: UXBAR        !< vertically integrated velocity '>'
366  real,dimension(nx,ny) :: UYBAR        !< vertically integrated velocity '^'
367  real,dimension(nx,ny) :: uxdef        !< partie due a la deformation
368  real,dimension(nx,ny) :: uydef        !< partie due a la deformation
369  real,dimension(nx,ny) :: uxflgz       !< vitesse stream-shelf
370  real,dimension(nx,ny) :: uyflgz       !< vitesse stream-shelf
371  real,dimension(nx,ny) :: UBX          !< basal sliding '>'
372  real,dimension(nx,ny) :: UBY          !< basal sliding '^'
373  real,dimension(nx,ny) :: UZSDOT       !< variation in time of surface vertical velocity
374  real,dimension(nx,ny) :: UX1          !<
375  real,dimension(nx,ny) :: UY1          !<
376  real,dimension(nx,ny) :: VBAR         !< depth averaged velocity magnitude (for output)
377!!!!!!!real,dimension(nx,ny) :: VSDOT        ! variation in time of surface velocity magnitude
378  real,dimension(nx,ny) :: W0           !< enfoncement du socle a l'equilibre isostatique
379  real,dimension(nx,ny) :: W1           !< enfoncement du socle courant
380  real,dimension(nx,ny) :: XX           !< work array
381  real,dimension(nx,ny) :: XLONG        !< longitude
382  real,dimension(nx,ny) :: YLAT         !< latitude
383  real,dimension(nx,ny) :: xcc          ! grille Xkm
384  real,dimension(nx,ny) :: ycc          ! grille Ykm
385!  real,dimension(nx,ny) :: ZS           !< surface topography above sea level
386  real,dimension(nx,ny) :: ETABAR       !<
387  real,dimension(nx,ny),target :: BSOC  !< altitude (ou bathymetrie) du socle 'o'
388  real,dimension(nx,ny) :: PVI          !< viscosite ice shelf
389  real,dimension(nx,ny) :: PVM          !< viscosite ice shelf
390  real,dimension(nx,ny) :: ramollo      !< pour ramollir les ice shelves
391  real,dimension(nx,ny) :: Abar         !< coefficient de Glen integre
392  real,dimension(nx,ny) :: OLDU         !< pour cptr et dans diagnoshelf
393  real,dimension(nx,ny) :: Uiter_centre !< pour iterations equation diagnostique
394  real,dimension(nx,ny) :: tabtest      !< tableau de travail
395
396
397  ! nouveaux tableaux (aout 2006) pour dragging-sliding
398  ! ces tableaux peuvent avoir des roles differents selon les modules de dragging
399  ! et de sliding utilises. Ils servent a  faire passer des contraintes geographiques entre
400  ! le main et les rounines de sliding-dragging.
401
402  integer,dimension(nx,ny) :: mstream_mx  !< masque stream selon x
403  integer,dimension(nx,ny) :: mstream_my  !< masque stream selon y
404  integer,dimension(nx,ny) :: mstream     !< masque stream sur les noeuds majeurs
405  real,dimension(nx,ny) :: socle_cry      !< courbure du socle, negatif -> vallees
406  real,dimension(nx,ny) :: drag_mx        !< coefficient pour tenir compte de variations       
407  real,dimension(nx,ny) :: drag_my        !< geographiques eventuelles dans le basal drag
408
409  integer,dimension(nx,ny) :: mslid_mx    !< masque glissement selon x
410  integer,dimension(nx,ny) :: mslid_my    !< masque glissement selon y
411  real,dimension(nx,ny) :: slid_mx        !< coefficient pour tenir compte de variations       
412  real,dimension(nx,ny) :: slid_my        !< geographiques eventuelles dans le glissement
413
414  ! afq -- iLOVECLIM coupling -- water conservation
415  real (kind = 8),target                  :: trendWAC    ! the global trend in ice volume
416  real (kind = 8),dimension(nx,ny),target :: smbWAC      ! smb+ablbord
417  real (kind = 8),dimension(nx,ny),target :: bmeltWAC    ! bmelt
418  real (kind = 8),dimension(nx,ny),target :: calvingWAC  ! calving
419
420
421  !REAL,dimension(-NL:NL,-NL:NL) :: WE   ! enfoncement du socle autour d'une charge unitaire
422
423
424
425  !      ********** common des tableaux a 3 dimensions *****
426  !real,dimension(:,:,:,:),allocatable :: BTT !< deformation parameter for flow law
427
428  !real,dimension(:,:,:,:),allocatable :: SA ! effet temperature sur la deformation (loi n=3)
429  !real,dimension(:,:,:,:),allocatable :: S2A ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3)
430  !real,dimension(:,:,:,:),allocatable :: SA_mx ! effet temperature sur la deformation (loi n=3)
431  !real,dimension(:,:,:,:),allocatable :: S2A_mx ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3)
432
433  !real,dimension(:,:,:,:),allocatable :: SA_my ! effet temperature sur la deformation (loi n=3)
434  !real,dimension(:,:,:,:),allocatable :: S2A_my ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3)
435  real,dimension(nx,ny,nz) :: SUX       !<
436  real,dimension(nx,ny,nz) :: SUY       !<
437  real,dimension(nx,ny,nz) :: TPMP      !< pressure melting point temperature in ice sheet 'o'
438  real,dimension(nx,ny,nz) :: UX        !< ice velocity '>'
439  real,dimension(nx,ny,nz) :: UY        !< ice velocity '^'
440  real,dimension(nx,ny,nz) :: UZR       !< ice velocity and derivatives
441  real,dimension(nx,ny,nz) :: ETA       !<
442
443
444  ! tableaux qui permettent de faire facilement des sorties debug via ncdf
445
446  real,dimension(nx,ny) :: debug_2D
447  real,dimension(nx,ny,220) :: debug_3D
448
449  !  tableaux qui permettent de faire des sorties netcdf avec les variables qui ne sont pas globales
450  !  real,dimension(nx,ny,199) :: netcdf_glob           ! pas l'air utilise
451
452
453  !real,dimension(NX,NY,NPL) :: XXX      !< work array, for temperature and output
454
455  real,dimension(nx,ny,nz+nzm) :: T     !< temperature in ice and mantle 'o'
456
457
458
459
460  !======================= common pour l'equilibrage en temperature
461  !real,dimension(NX,NY) :: Uxbilan      ! vitesse de bilan '>'
462  !real,dimension(NX,NY) :: Uybilan      ! vitesse de bilan '^'
463
464
465
466  ! ===================== Booleens ========================================
467  logical :: SHELFY                     !<
468  logical :: BOOST                      !<
469  logical :: MARINE                     !<
470  logical :: appel_new_flot             !< pour appeler la routine new_flot
471
472  logical,dimension(nx,ny) :: FLOT      !< vrai si flottant (test d'archimede) 'o'
473  logical,dimension(nx,ny) :: FLOTMX    !< if flotting (one neighboord  floats) '>'
474  logical,dimension(nx,ny) :: FLOTMY    !< if flotting (one neighboord  floats) '^' 
475  logical,dimension(nx,ny) :: FRONT_RESC!< comme front (mais boolean) pour remplimat rescue
476  logical,dimension(nx,ny) :: FBM       !<
477  logical,dimension(nx,ny) :: OKUMAT    !<
478  logical,dimension(nx,ny) :: OKVMAT    !<
479  logical,dimension(nx,ny) :: GRZONE    !<
480  logical,dimension(nx,ny) :: GZMX      !< point stream ">"
481  logical,dimension(nx,ny) :: GZMY      !< point stream "^"
482  logical,dimension(nx,ny) :: FLGZMX    !< points stream ou shelf ou ile (equ. ellpt) ">"
483  logical,dimension(nx,ny) :: FLGZMY    !< points stream ou shelf ou ile (equ ellipt) "^"
484  logical,dimension(nx,ny) :: ILEMX     !< points ile ">"
485  logical,dimension(nx,ny) :: ILEMY     !< points ile "^"
486  logical,dimension(nx,ny) :: cotemx    !< points cotiers ">"
487  logical,dimension(nx,ny) :: cotemy    !< points cotiers "^"
488  logical,dimension(nx,ny) :: fleuvemx  !< actual grounded stream
489  logical,dimension(nx,ny) :: fleuvemy  !< actual grounded stream
490  logical,dimension(nx,ny) :: isolx     !< designe un point sans voisin sur ses faces x
491  logical,dimension(nx,ny) :: isoly     !< designe un point sans voisin sur ses faces y
492  logical,dimension(nx,ny) :: new_flot_point  !< pour signaler les points qui se mettent a flotter entre 2 pas de temps dtt
493  logical,dimension(nx,ny) :: new_flotmx !< pour signaler les points qui deviennent flottantmx entre 2 dtt
494  logical,dimension(nx,ny) :: new_flotmy !< pour signaler les points qui deviennent flottantmy entre 2 dtt
495  logical,dimension(nx,ny) :: flot_marais  !< afq -- vrai si flottant et coince entre points poses 'o'
496  logical,dimension(nx,ny) :: iceberg   !< point iceberg
497
498  ! ===================== File id =========================================
499  integer :: num_param     = 10   !< Id of param_list.dat
500  integer :: num_coupe     = 11   !< Id of coupe.ijz
501  integer :: num_vitbil    = 12   !< Id of vitbil
502  integer :: num_newton    = 15   !< Id of corrextion-newton.res
503  integer :: num_file1     = 18   !< Id of
504  integer :: num_file2     = 19   !< Id of
505  integer :: num_forc      = 20   !< Id of forcage
506  integer :: num_dat       = 21   !< Id of dat
507  integer :: num_cptr      = 30   !< Id of cptr
508  integer :: num_debug     = 33   !< Id of ritz debug
509  integer :: num_ritz      = 3535 !< Id of ritz
510  integer :: num_templlib  = 36   !< Id of ritz templlib
511  integer :: num_rep_42    = 42   !< Id of reponse
512  integer :: num_trace     = 81   !< Id of trace-reboot
513  integer :: num_file      = 88   !< Id of
514  integer :: num_ts_ritz   = 89
515  integer :: num_kelvin    = 90   !< Id of kelvin.res
516  integer :: num_phil      = 91
517  integer :: num_templin   = 98   !< Id of templin.res
518  integer :: num_sealevel  = 110
519  integer :: num_mk_vitbil = 122  !< Id of masque_vitbil
520  integer :: num_ic_vo     = 171  !< vostok
521  integer :: num_ic_by     = 172  !< byrd
522  integer :: num_ic_dm     = 173  !< dml
523  integer :: num_ic_dc     = 174  !< dome C
524  integer :: num_ic_df     = 175  !< dome Fuji
525  integer :: num_file3     = 993
526  integer :: num_file4     = 995  !< Id of
527  integer :: num_coor      = 2004 !< Id of coord-Ant-40km
528!  integer :: num_tracebug        !< numero de l'unite itracebug
529
530  ! Variables communes au main et aux subroutines du step
531  logical :: base_froide
532  logical :: base_temp
533  real  :: timemax
534
535end module MODULE3D_PHY
Note: See TracBrowser for help on using the repository browser.