The TELEMAC-MASCARET system  trunk
api_handle_var_t2d.f
Go to the documentation of this file.
1 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 !
5  MODULE api_handle_var_t2d
6 
9  IMPLICIT NONE
11  INTEGER, PARAMETER :: t2d_var_len=40
13  INTEGER, PARAMETER :: t2d_type_len=12
15  INTEGER, PARAMETER :: t2d_info_len=200
17  INTEGER, PARAMETER :: nb_var_t2d=84
19  CHARACTER(LEN=40),ALLOCATABLE,DIMENSION(:) :: vname_t2d
21  CHARACTER(LEN=200),ALLOCATABLE,DIMENSION(:) :: vinfo_t2d
22 !
23  CONTAINS
24 !
25  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37  SUBROUTINE get_double_t2d_d
38  & (inst, varname, valeur, index1, index2, index3, ierr)
39 !
40  TYPE(instance_t2d), INTENT(IN) :: INST
41  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
42  DOUBLE PRECISION, INTENT(OUT):: VALEUR
43  INTEGER, INTENT(IN) :: INDEX1
44  INTEGER, INTENT(IN) :: INDEX2
45  INTEGER, INTENT(IN) :: INDEX3
46  INTEGER, INTENT(OUT):: IERR
47 !
48  ierr = 0
49  valeur = 0.0
50 !
51  IF(trim(varname).EQ.'MODEL.HBOR') THEN
52  valeur = inst%HBOR%R(index1)
53  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
54  valeur = inst%UBOR%R(index1)
55  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
56  valeur = inst%VBOR%R(index1)
57  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
58  valeur = inst%MESH%XNEBOR%R(index1)
59  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
60  valeur = inst%MESH%YNEBOR%R(index1)
61  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
62  valeur = inst%H%R(index1)
63  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
64  valeur = inst%DH%R(index1)
65  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
66  valeur = inst%ZF%R(index1)
67  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
68  valeur = inst%U%R(index1)
69  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
70  valeur = inst%V%R(index1)
71  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
72  valeur = inst%MESH%X%R(index1)
73  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
74  valeur = inst%MESH%Y%R(index1)
75  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
76  valeur = inst%FLUX_BOUNDARIES(index1)
77  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
78  valeur = inst%TE5%R(index1)
79  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
80  valeur = inst%COTE(index1)
81  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
82  valeur = inst%CHESTR%R(index1)
83  ELSE IF(trim(varname).EQ.'MODEL.AT') THEN
84  valeur = inst%AT
85  ELSE IF(trim(varname).EQ.'MODEL.DT') THEN
86  valeur = inst%DT
87  ELSE IF(trim(varname).EQ.'MODEL.TMAX') THEN
88  valeur = inst%TMAX
89  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
90  valeur = inst%DEBIT(index1)
91  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
92  valeur = inst%CTIDE
93  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
94  valeur = inst%CTIDEV
95  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
96  valeur = inst%MSL
97  ELSE IF(trim(varname).EQ.'MODEL.FAIR') THEN
98  valeur = inst%FAIR
99  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
100  valeur = inst%AK%R(index1)
101  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
102  valeur = inst%EP%R(index1)
103  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
104  valeur = inst%H0%R(index1)
105  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
106  valeur = inst%T%ADR(index1)%P%R(index2)
107  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
108  valeur = inst%Q%R(index1)
109  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
110  valeur = inst%DCLA(index1)
111  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
112  valeur = inst%AC(index1)
113  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
114  valeur = inst%XWC(index1)
115  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
116  valeur = inst%Z%R(index1)
117  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
118  valeur = inst%QBOR%ADR(index1)%P%R(index2)
119  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
120  valeur = inst%EBOR%ADR(index1)%P%R(index2)
121  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
122  valeur = inst%FLBOR%R(index1)
123  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
124  valeur = inst%TOB%R(index1)
125  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
126  valeur = inst%E%R(index1)
127  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
128  valeur = inst%PARTHENIADES(index1,index2)
129  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
130  valeur = inst%VOLU2D%R(index1)
131  ELSE IF(trim(varname).EQ.'MODEL.PROPNU') THEN
132  valeur = inst%PROPNU
133  ! <get_double>
134  ELSE
135  ierr = unknown_var_error
136  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
137  ENDIF
138 !
139  END SUBROUTINE get_double_t2d_d
140  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
142  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
152  SUBROUTINE set_double_t2d_d
153  & (inst, varname, valeur, index1, index2, index3, ierr)
154 !
155  TYPE(instance_t2d), INTENT(INOUT) :: INST
156  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
157  DOUBLE PRECISION, INTENT(IN) :: VALEUR
158  INTEGER, INTENT(IN) :: INDEX1
159  INTEGER, INTENT(IN) :: INDEX2
160  INTEGER, INTENT(IN) :: INDEX3
161  INTEGER, INTENT(OUT) :: IERR
162 !
163  ierr = 0
164  IF(trim(varname).EQ.'MODEL.HBOR') THEN
165  inst%HBOR%R(index1) = valeur
166  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
167  inst%UBOR%R(index1) = valeur
168  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
169  inst%VBOR%R(index1) = valeur
170  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
171  inst%H%R(index1) = valeur
172  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
173  inst%DH%R(index1) = valeur
174  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
175  inst%ZF%R(index1) = valeur
176  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
177  inst%U%R(index1) = valeur
178  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
179  inst%V%R(index1) = valeur
180  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
181  inst%FLUX_BOUNDARIES(index1) = valeur
182  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
183  inst%TE5%R(index1) = valeur
184  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
185  inst%COTE(index1) = valeur
186  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
187  inst%DEBIT(index1) = valeur
188  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
189  inst%CHESTR%R(index1) = valeur
190  ELSE IF(trim(varname).EQ.'MODEL.AT') THEN
191  inst%AT = valeur
192  ELSE IF(trim(varname).EQ.'MODEL.DT') THEN
193  inst%DT = valeur
194  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
195  inst%CTIDE = valeur
196  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
197  inst%CTIDEV = valeur
198  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
199  inst%MSL = valeur
200  ELSE IF(trim(varname).EQ.'MODEL.FAIR') THEN
201  inst%FAIR = valeur
202  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
203  inst%AK%R(index1)=valeur
204  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
205  inst%EP%R(index1)=valeur
206  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
207  inst%H0%R(index1) = valeur
208  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
209  inst%T%ADR(index1)%P%R(index2) = valeur
210  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
211  inst%Q%R(index1) = valeur
212  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
213  inst%DCLA(index1) = valeur
214  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
215  inst%AC(index1) = valeur
216  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
217  inst%XWC(index1) = valeur
218  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
219  inst%Z%R(index1) = valeur
220  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
221  inst%QBOR%ADR(index1)%P%R(index2) = valeur
222  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
223  inst%EBOR%ADR(index1)%P%R(index2) = valeur
224  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
225  inst%FLBOR%R(index1) = valeur
226  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
227  inst%TOB%R(index1) = valeur
228  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
229  inst%E%R(index1) = valeur
230  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
231  inst%PARTHENIADES(index1,index2) = valeur
232  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
233  inst%VOLU2D%R(index1) = valeur
234  ELSE IF(trim(varname).EQ.'MODEL.PROPNU') THEN
235  inst%PROPNU = valeur
236  ! <set_double>
237  ELSE
238  ierr = unknown_var_error
239  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
240  ENDIF
241 !
242  END SUBROUTINE set_double_t2d_d
243 !
244  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
247  SUBROUTINE get_double_array_t2d_d
248  & (inst, varname, valeur, dim1, ierr, block_index)
249 !
250  TYPE(instance_t2d), INTENT(IN) :: INST
251  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
252  INTEGER, INTENT(IN) :: DIM1
253  DOUBLE PRECISION, INTENT(INOUT):: VALEUR(*)
254  INTEGER, INTENT(OUT):: IERR
255  INTEGER, OPTIONAL, INTENT(IN) :: BLOCK_INDEX
256 !
257  ierr = 0
258 !
259  IF(trim(varname).EQ.'MODEL.HBOR') THEN
260  valeur(1:inst%HBOR%DIM1) = inst%HBOR%R(1:inst%HBOR%DIM1)
261  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
262  valeur(1:inst%UBOR%DIM1) = inst%UBOR%R(1:inst%UBOR%DIM1)
263  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
264  valeur(1:inst%VBOR%DIM1) = inst%VBOR%R(1:inst%VBOR%DIM1)
265  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
266  valeur(1:inst%MESH%XNEBOR%DIM1) =
267  & inst%MESH%XNEBOR%R(1:inst%MESH%XNEBOR%DIM1)
268  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
269  valeur(1:inst%MESH%YNEBOR%DIM1) =
270  & inst%MESH%YNEBOR%R(1:inst%MESH%YNEBOR%DIM1)
271  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
272  valeur(1:inst%H%DIM1) = inst%H%R(1:inst%H%DIM1)
273  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
274  valeur(1:inst%DH%DIM1) = inst%DH%R(1:inst%DH%DIM1)
275  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
276  valeur(1:inst%ZF%DIM1) = inst%ZF%R(1:inst%ZF%DIM1)
277  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
278  valeur(1:inst%U%DIM1) = inst%U%R(1:inst%U%DIM1)
279  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
280  valeur(1:inst%V%DIM1) = inst%V%R(1:inst%V%DIM1)
281  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
282  valeur(1:inst%MESH%X%DIM1) = inst%MESH%X%R(1:inst%MESH%X%DIM1)
283  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
284  valeur(1:inst%MESH%Y%DIM1) = inst%MESH%Y%R(1:inst%MESH%Y%DIM1)
285  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
286  valeur(1:SIZE(inst%FLUX_BOUNDARIES)) =
287  & inst%FLUX_BOUNDARIES(1:SIZE(inst%FLUX_BOUNDARIES))
288  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
289  valeur(1:inst%TE5%DIM1) = inst%TE5%R(1:inst%TE5%DIM1)
290  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
291  valeur(1:SIZE(inst%COTE)) = inst%COTE(1:SIZE(inst%COTE))
292  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
293  valeur(1:inst%CHESTR%DIM1) = inst%CHESTR%R(1:inst%CHESTR%DIM1)
294  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
295  valeur(1:SIZE(inst%DEBIT)) = inst%DEBIT(1:SIZE(inst%DEBIT))
296  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
297  valeur(1:SIZE(inst%H0%R)) =
298  & inst%H0%R(1:SIZE(inst%H0%R))
299  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
300  IF(PRESENT(block_index))THEN
301  valeur(1:inst%T%ADR(block_index)%P%DIM1) =
302  & inst%T%ADR(block_index)%P%R(1:inst%T%ADR(block_index)%P%DIM1)
303  ELSE
304  ierr = index_block_missing
305  err_mess = 'THE BOCK NUMBER IS MISSING FOR'//trim(varname)
306  END IF
307  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
308  valeur(1:SIZE(inst%Q%R)) =
309  & inst%Q%R(1:SIZE(inst%Q%R))
310  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
311  valeur(1:SIZE(inst%DCLA)) =
312  & inst%DCLA(1:SIZE(inst%DCLA))
313  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
314  valeur(1:SIZE(inst%AC)) =
315  & inst%AC(1:SIZE(inst%AC))
316  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
317  valeur(1:SIZE(inst%XWC)) =
318  & inst%XWC(1:SIZE(inst%XWC))
319  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
320  valeur(1:SIZE(inst%Z%R)) =
321  & inst%Z%R(1:SIZE(inst%Z%R))
322  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
323  IF(PRESENT(block_index))THEN
324  valeur(1:SIZE(inst%QBOR%ADR(block_index)%P%R)) =
325  & inst%QBOR%ADR(block_index)%P%R
326  & (1:SIZE(inst%QBOR%ADR(block_index)%P%R))
327  ELSE
328  ierr = index_block_missing
329  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
330  ENDIF
331  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
332  IF(PRESENT(block_index))THEN
333  valeur(1:SIZE(inst%EBOR%ADR(block_index)%P%R)) =
334  & inst%EBOR%ADR(block_index)%P%R
335  & (1:SIZE(inst%EBOR%ADR(block_index)%P%R))
336  ELSE
337  ierr = index_block_missing
338  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
339  ENDIF
340  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
341  valeur(1:SIZE(inst%FLBOR%R)) =
342  & inst%FLBOR%R(1:SIZE(inst%FLBOR%R))
343  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
344  valeur(1:SIZE(inst%TOB%R)) =
345  & inst%TOB%R(1:SIZE(inst%TOB%R))
346  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
347  valeur(1:SIZE(inst%E%R)) =
348  & inst%E%R(1:SIZE(inst%E%R))
349  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
350  valeur(1:SIZE(inst%VOLU2D%R)) =
351  & inst%VOLU2D%R(1:SIZE(inst%VOLU2D%R))
352  ! <get_double_array>
353  ELSE
354  ierr = unknown_var_error
355  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
356  ENDIF
357 !
358  END SUBROUTINE get_double_array_t2d_d
359 !
360  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
362  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363  SUBROUTINE set_double_array_t2d_d
364  & (inst, varname, valeur, dim1, ierr, block_index)
365 !
366  TYPE(instance_t2d), INTENT(INOUT) :: INST
367  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
368  INTEGER, INTENT(IN) :: DIM1
369  DOUBLE PRECISION, INTENT(IN):: VALEUR(dim1)
370  INTEGER, INTENT(OUT):: IERR
371  INTEGER, OPTIONAL, INTENT(IN) :: BLOCK_INDEX
372 !
373  ierr = 0
374 !
375  IF(trim(varname).EQ.'MODEL.HBOR') THEN
376  inst%HBOR%R(1:inst%HBOR%DIM1) = valeur(1:inst%HBOR%DIM1)
377  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
378  inst%UBOR%R(1:inst%UBOR%DIM1) = valeur(1:inst%UBOR%DIM1)
379  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
380  inst%VBOR%R(1:inst%VBOR%DIM1) = valeur(1:inst%VBOR%DIM1)
381  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
382  inst%MESH%XNEBOR%R(1:inst%MESH%XNEBOR%DIM1) =
383  & valeur(1:inst%MESH%XNEBOR%DIM1)
384  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
385  inst%MESH%YNEBOR%R(1:inst%MESH%YNEBOR%DIM1) =
386  & valeur(1:inst%MESH%YNEBOR%DIM1)
387  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
388  inst%H%R(1:inst%H%DIM1) = valeur(1:inst%H%DIM1)
389  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
390  inst%DH%R(1:inst%DH%DIM1) = valeur(1:inst%DH%DIM1)
391  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
392  inst%ZF%R(1:inst%ZF%DIM1) = valeur(1:inst%ZF%DIM1)
393  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
394  inst%U%R(1:inst%U%DIM1) = valeur(1:inst%U%DIM1)
395  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
396  inst%V%R(1:inst%V%DIM1) = valeur(1:inst%V%DIM1)
397  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
398  inst%MESH%X%R(1:inst%MESH%X%DIM1) = valeur(1:inst%MESH%X%DIM1)
399  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
400  inst%MESH%Y%R(1:inst%MESH%Y%DIM1) = valeur(1:inst%MESH%Y%DIM1)
401  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
402  inst%FLUX_BOUNDARIES(1:SIZE(inst%FLUX_BOUNDARIES)) =
403  & valeur(1:SIZE(inst%FLUX_BOUNDARIES))
404  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
405  inst%TE5%R(1:inst%TE5%DIM1) = valeur(1:inst%TE5%DIM1)
406  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
407  inst%COTE(1:SIZE(inst%COTE)) = valeur(1:SIZE(inst%COTE))
408  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
409  inst%CHESTR%R(1:inst%CHESTR%DIM1) = valeur(1:inst%CHESTR%DIM1)
410  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
411  inst%DEBIT(1:SIZE(inst%DEBIT)) = valeur(1:SIZE(inst%DEBIT))
412  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
413  inst%H0%R(1:SIZE(inst%H0%R)) =
414  & valeur(1:SIZE(inst%H0%R))
415  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
416  IF(PRESENT(block_index))THEN
417  inst%T%ADR(block_index)%P%R(1:inst%T%ADR(block_index)%P%DIM1) =
418  & valeur(1:inst%T%ADR(block_index)%P%DIM1)
419  ELSE
420  ierr = index_block_missing
421  err_mess = 'THE BOCK NUMBER IS MISSING FOR'//trim(varname)
422  END IF
423  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
424  inst%Q%R(1:SIZE(inst%Q%R)) =
425  & valeur(1:SIZE(inst%Q%R))
426  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
427  inst%DCLA(1:SIZE(inst%DCLA)) =
428  & valeur(1:SIZE(inst%DCLA))
429  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
430  inst%AC(1:SIZE(inst%AC)) =
431  & valeur(1:SIZE(inst%AC))
432  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
433  inst%XWC(1:SIZE(inst%XWC)) =
434  & valeur(1:SIZE(inst%XWC))
435  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
436  inst%Z%R(1:SIZE(inst%Z%R)) =
437  & valeur(1:SIZE(inst%Z%R))
438  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
439  IF(PRESENT(block_index))THEN
440  inst%QBOR%ADR(block_index)%P%R
441  & (1:SIZE(inst%QBOR%ADR(block_index)%P%R))=
442  & valeur(1:SIZE(inst%QBOR%ADR(block_index)%P%R))
443  ELSE
444  ierr = index_block_missing
445  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
446  ENDIF
447  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
448  IF(PRESENT(block_index))THEN
449  inst%EBOR%ADR(block_index)%P%R
450  & (1:SIZE(inst%EBOR%ADR(block_index)%P%R))=
451  & valeur(1:SIZE(inst%EBOR%ADR(block_index)%P%R))
452  ELSE
453  ierr = index_block_missing
454  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
455  ENDIF
456  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
457  inst%FLBOR%R(1:SIZE(inst%FLBOR%R)) =
458  & valeur(1:SIZE(inst%FLBOR%R))
459  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
460  inst%TOB%R(1:SIZE(inst%TOB%R)) =
461  & valeur(1:SIZE(inst%TOB%R))
462  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
463  inst%E%R(1:SIZE(inst%E%R)) =
464  & valeur(1:SIZE(inst%E%R))
465  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
466  inst%VOLU2D%R(1:SIZE(inst%VOLU2D%R)) =
467  & valeur(1:SIZE(inst%VOLU2D%R))
468  ! <set_double_array>
469  ELSE
470  ierr = unknown_var_error
471  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
472  ENDIF
473 !
474  END SUBROUTINE set_double_array_t2d_d
475 !
476  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
478  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
485  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
486  SUBROUTINE get_integer_array_t2d_d
487  & (inst, varname, valeur, dim1, ierr)
488 !
489  TYPE(instance_t2d), INTENT(IN) :: INST
490  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
491  INTEGER, INTENT(IN) :: DIM1
492  INTEGER, INTENT(OUT) :: VALEUR(dim1)
493  INTEGER, INTENT(OUT) :: IERR
494 !
495  ierr = 0
496  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
497  valeur(1:inst%LIHBOR%DIM1) = inst%LIHBOR%I(1:inst%LIHBOR%DIM1)
498  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
499  valeur(1:inst%LIUBOR%DIM1) = inst%LIUBOR%I(1:inst%LIUBOR%DIM1)
500  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
501  valeur(1:inst%LIVBOR%DIM1) = inst%LIVBOR%I(1:inst%LIVBOR%DIM1)
502  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
503  valeur(1:inst%MESH%KP1BOR%DIM1) =
504  & inst%MESH%KP1BOR%I(1:inst%MESH%KP1BOR%DIM1)
505  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
506  valeur(1:inst%NUMLIQ%DIM1) = inst%NUMLIQ%I(1:inst%NUMLIQ%DIM1)
507  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
508  valeur(1:inst%MESH%NBOR%DIM1) =
509  & inst%MESH%NBOR%I(1:inst%MESH%NBOR%DIM1)
510  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
511  valeur(1:SIZE(inst%MESH%IKLE%I)) =
512  & inst%MESH%IKLE%I(1:SIZE(inst%MESH%IKLE%I))
513  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
514  valeur(1:SIZE(inst%MESH%NACHB%I)) =
515  & inst%MESH%NACHB%I(1:SIZE(inst%MESH%NACHB%I))
516  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
517  valeur(1:inst%MESH%KNOLG%DIM1) =
518  & inst%MESH%KNOLG%I(1:inst%MESH%KNOLG%DIM1)
519  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
520  valeur(1:SIZE(inst%BND_TIDE)) =
521  & inst%BND_TIDE(1:SIZE(inst%BND_TIDE))
522  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
523  valeur(1:SIZE(inst%CLU%I)) =
524  & inst%CLU%I(1:SIZE(inst%CLU%I))
525  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
526  valeur(1:SIZE(inst%CLV%I)) =
527  & inst%CLV%I(1:SIZE(inst%CLV%I))
528  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
529  valeur(1:SIZE(inst%LIQBOR%I)) =
530  & inst%LIQBOR%I(1:SIZE(inst%LIQBOR%I))
531  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
532  valeur(1:SIZE(inst%LIEBOR%I)) =
533  & inst%LIEBOR%I(1:SIZE(inst%LIEBOR%I))
534  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
535  valeur(1:SIZE(inst%MARDAT)) =
536  & inst%MARDAT(1:SIZE(inst%MARDAT))
537  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
538  valeur(1:SIZE(inst%MARTIM)) =
539  & inst%MARTIM(1:SIZE(inst%MARTIM))
540  ! <get_integer_array>
541  ELSE
542  ierr = unknown_var_error
543  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
544  ENDIF
545 !
546  END SUBROUTINE get_integer_array_t2d_d
547 !
548  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
550  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
557  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
558  SUBROUTINE set_integer_array_t2d_d
559  & (inst, varname, valeur, dim1, ierr)
560 !
561  TYPE(instance_t2d), INTENT(INOUT) :: INST
562  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
563  INTEGER, INTENT(IN) :: DIM1
564  INTEGER, INTENT(IN) :: VALEUR(dim1)
565  INTEGER, INTENT(OUT) :: IERR
566 !
567  ierr = 0
568  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
569  inst%LIHBOR%I(1:inst%LIHBOR%DIM1) = valeur(1:inst%LIHBOR%DIM1)
570  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
571  inst%LIUBOR%I(1:inst%LIUBOR%DIM1) = valeur(1:inst%LIUBOR%DIM1)
572  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
573  inst%LIVBOR%I(1:inst%LIVBOR%DIM1) = valeur(1:inst%LIVBOR%DIM1)
574  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
575  inst%MESH%KP1BOR%I(1:inst%MESH%KP1BOR%DIM1) =
576  & valeur(1:inst%MESH%KP1BOR%DIM1)
577  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
578  inst%NUMLIQ%I(1:inst%NUMLIQ%DIM1) = valeur(1:inst%NUMLIQ%DIM1)
579  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
580  inst%MESH%NBOR%I(1:inst%MESH%NBOR%DIM1) =
581  & valeur(1:inst%MESH%NBOR%DIM1)
582  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
583  inst%MESH%IKLE%I(1:SIZE(inst%MESH%IKLE%I)) =
584  & valeur(1:SIZE(inst%MESH%IKLE%I))
585  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
586  inst%MESH%NACHB%I(1:SIZE(inst%MESH%NACHB%I)) =
587  & valeur(1:SIZE(inst%MESH%NACHB%I))
588  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
589  inst%MESH%KNOLG%I(1:inst%MESH%KNOLG%DIM1) =
590  & valeur(1:inst%MESH%KNOLG%DIM1)
591  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
592  inst%BND_TIDE(1:SIZE(inst%BND_TIDE)) =
593  & valeur(1:SIZE(inst%BND_TIDE))
594  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
595  inst%CLU%I(1:SIZE(inst%CLU%I)) =
596  & valeur(1:SIZE(inst%CLU%I))
597  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
598  inst%CLV%I(1:SIZE(inst%CLV%I)) =
599  & valeur(1:SIZE(inst%CLV%I))
600  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
601  inst%LIQBOR%I(1:SIZE(inst%LIQBOR%I)) =
602  & valeur(1:SIZE(inst%LIQBOR%I))
603  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
604  inst%LIEBOR%I(1:SIZE(inst%LIEBOR%I)) =
605  & valeur(1:SIZE(inst%LIEBOR%I))
606  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
607  inst%MARDAT(1:SIZE(inst%MARDAT)) =
608  & valeur(1:SIZE(inst%MARDAT))
609  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
610  inst%MARTIM(1:SIZE(inst%MARTIM)) =
611  & valeur(1:SIZE(inst%MARTIM))
612  ! <set_integer_array>
613  ELSE
614  ierr = unknown_var_error
615  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
616  ENDIF
617 !
618  END SUBROUTINE set_integer_array_t2d_d
619 !
620  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
622  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
631  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
632  SUBROUTINE get_integer_t2d_d
633  & (inst, varname, valeur, index1, index2, index3, ierr)
634 !
635  TYPE(instance_t2d), INTENT(IN) :: INST
636  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
637  INTEGER, INTENT(OUT) :: VALEUR
638  INTEGER, INTENT(IN) :: INDEX1
639  INTEGER, INTENT(IN) :: INDEX2
640  INTEGER, INTENT(IN) :: INDEX3
641  INTEGER, INTENT(OUT) :: IERR
642 !
643  ierr = 0
644  valeur = -1
645  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
646  valeur = inst%LIHBOR%I(index1)
647  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
648  valeur = inst%LIUBOR%I(index1)
649  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
650  valeur = inst%LIVBOR%I(index1)
651  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
652  valeur = inst%MESH%KP1BOR%I(index1)
653  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
654  valeur = inst%NUMLIQ%I(index1)
655  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
656  valeur = inst%MESH%NBOR%I(index1)
657  ELSE IF(trim(varname).EQ.'MODEL.NPOIN') THEN
658  valeur = inst%MESH%NPOIN
659  ELSE IF(trim(varname).EQ.'MODEL.NELEM') THEN
660  valeur = inst%MESH%NELEM
661  ELSE IF(trim(varname).EQ.'MODEL.NPTFR') THEN
662  valeur = inst%MESH%NPTFR
663  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
664  valeur = inst%NIT
665  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
666  valeur = inst%LT
667  ELSE IF(trim(varname).EQ.'MODEL.NBMAXNSHARE') THEN
668  valeur = inst%NBMAXNSHARE
669  ELSE IF(trim(varname).EQ.'MODEL.COMPLEO') THEN
670  valeur = inst%COMPLEO
671  ELSE IF(trim(varname).EQ.'MODEL.PTINIG') THEN
672  valeur = inst%PTINIG
673  ELSE IF(trim(varname).EQ.'MODEL.NPTIR') THEN
674  valeur = inst%NPTIR
675  ELSE IF(trim(varname).EQ.'MODEL.NELMAX') THEN
676  valeur = inst%MESH%NELMAX
677  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
678  valeur = inst%MESH%IKLE%I((index2-1)*inst%MESH%IKLE%DIM1
679  & + index1)
680  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
681  valeur = inst%MESH%NACHB%I((index2-1)*inst%NBMAXNSHARE
682  & + index1)
683  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
684  valeur = inst%MESH%KNOLG%I(index1)
685  ELSE IF(trim(varname).EQ.'MODEL.CPL_PERIOD') THEN
686  valeur = inst%SIS%PERCOU
687  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
688  valeur = inst%BND_TIDE(index1)
689  ELSE IF(trim(varname).EQ.'MODEL.ITURB') THEN
690  valeur = inst%ITURB
691  ELSE IF(trim(varname).EQ.'MODEL.NTRAC') THEN
692  valeur = inst%NTRAC
693  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
694  valeur = inst%CLU%I(index1)
695  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
696  valeur = inst%CLV%I(index1)
697  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
698  valeur = inst%LIQBOR%I(index1)
699  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
700  valeur = inst%LIEBOR%I(index1)
701  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
702  valeur = inst%NSICLA
703  ELSE IF(trim(varname).EQ.'MODEL.NOMBLAY') THEN
704  valeur = inst%NOMBLAY
705  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
706  valeur = inst%MARDAT(index1)
707  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
708  valeur = inst%MARTIM(index1)
709  ELSE IF(trim(varname).EQ.'MODEL.START_RECORD') THEN
710  valeur = inst%START_RECORD
711  ! <get_integer>
712  ELSE
713  ierr = unknown_var_error
714  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
715  ENDIF
716 !
717  END SUBROUTINE get_integer_t2d_d
718 !
719  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
721  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
730  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
731  SUBROUTINE set_integer_t2d_d
732  & (inst, varname, valeur, index1, index2, index3, ierr)
733 !
734  TYPE(instance_t2d), INTENT(INOUT) :: INST
735  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
736  INTEGER, INTENT(IN) :: VALEUR
737  INTEGER, INTENT(IN) :: INDEX1
738  INTEGER, INTENT(IN) :: INDEX2
739  INTEGER, INTENT(IN) :: INDEX3
740  INTEGER, INTENT(OUT) :: IERR
741 !
742  ierr = 0
743  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
744  inst%LIHBOR%I(index1) = valeur
745  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
746  inst%LIUBOR%I(index1) = valeur
747  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
748  inst%LIVBOR%I(index1) = valeur
749  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
750  inst%NIT = valeur
751  ELSE IF(trim(varname).EQ.'MODEL.CPL_PERIOD') THEN
752  inst%SIS%PERCOU = valeur
753  ELSE IF(trim(varname).EQ.'MODEL.LISTIN_PERIOD') THEN
754  inst%SIS%LISPRD = valeur
755  ELSE IF(trim(varname).EQ.'MODEL.GRAPH_PERIOD') THEN
756  inst%SIS%LEOPRD = valeur
757  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
758  inst%LT = valeur
759  ELSE IF(trim(varname).EQ.'MODEL.NBMAXNSHARE') THEN
760  inst%NBMAXNSHARE = valeur
761  ELSE IF(trim(varname).EQ.'MODEL.COMPLEO') THEN
762  inst%COMPLEO = valeur
763  ELSE IF(trim(varname).EQ.'MODEL.PTINIG') THEN
764  inst%PTINIG = valeur
765  ELSE IF(trim(varname).EQ.'MODEL.NPTIR') THEN
766  inst%NPTIR = valeur
767  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
768  inst%BND_TIDE(index1)=valeur
769  ELSE IF(trim(varname).EQ.'MODEL.ITURB') THEN
770  inst%ITURB = valeur
771  ELSE IF(trim(varname).EQ.'MODEL.NTRAC') THEN
772  inst%NTRAC = valeur
773  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
774  inst%CLU%I(index1) = valeur
775  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
776  inst%CLV%I(index1) = valeur
777  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
778  inst%LIQBOR%I(index1) = valeur
779  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
780  inst%LIEBOR%I(index1) = valeur
781  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
782  inst%NSICLA = valeur
783  ELSE IF(trim(varname).EQ.'MODEL.NOMBLAY') THEN
784  inst%NOMBLAY = valeur
785  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
786  inst%MARDAT(index1) = valeur
787  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
788  inst%MARTIM(index1) = valeur
789  ELSE IF(trim(varname).EQ.'MODEL.START_RECORD') THEN
790  inst%START_RECORD = valeur
791  ! <set_integer>
792  ELSE
793  ierr = unknown_var_error
794  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
795  ENDIF
796 !
797  END SUBROUTINE set_integer_t2d_d
798 !
799  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
801  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
810  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
811  SUBROUTINE get_string_t2d_d
812  & (inst, varname, valeur, valuelen, index1, index2, ierr)
813 !
814  TYPE(instance_t2d), INTENT(IN) :: INST
815  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
816  INTEGER, INTENT(IN) :: VALUELEN
817  INTEGER, INTENT(IN) :: INDEX1
818  INTEGER, INTENT(IN) :: INDEX2
819  CHARACTER, INTENT(OUT) :: VALEUR(valuelen)
820  INTEGER, INTENT(OUT) :: IERR
821 !
822  INTEGER I,J
823 !
824  ierr = 0
825  valeur = ""
826  IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
827  i = inst%T2DRES
828  DO j = 1,valuelen
829  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
830  ENDDO
831  ELSE IF(trim(varname).EQ.'MODEL.BCFILE') THEN
832  i = inst%T2DCLI
833  DO j = 1,valuelen
834  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
835  ENDDO
836  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
837  i = inst%T2DGEO
838  DO j = 1,valuelen
839  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
840  ENDDO
841  ELSE IF(trim(varname).EQ.'MODEL.METEOFILE') THEN
842  i = inst%T2ATMB
843  DO j = 1,valuelen
844  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
845  ENDDO
846  ELSE IF(trim(varname).EQ.'MODEL.FO2FILE') THEN
847  i = inst%T2DFO2
848  DO j = 1,valuelen
849  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
850  ENDDO
851  ELSE IF(trim(varname).EQ.'MODEL.LIQBCFILE') THEN
852  i = inst%T2DIMP
853  DO j = 1,valuelen
854  valeur(j:j) = inst%T2D_FILES(i)%NAME(j:j)
855  ENDDO
856  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
857  DO j = 1,valuelen
858  valeur(j:j) = inst%EQUA(j:j)
859  ENDDO
860  ELSE IF(trim(varname).EQ.'MODEL.PREFILE') THEN
861  DO j=1,valuelen
862  valeur(j:j) = inst%T2D_FILES(inst%T2DPRE)%NAME(j:j)
863  ENDDO
864  ! <get_string>
865  ELSE
866  ierr = unknown_var_error
867  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
868  ENDIF
869 !
870  END SUBROUTINE get_string_t2d_d
871 !
872  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
874  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
883  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
884  SUBROUTINE set_string_t2d_d
885  & (inst, varname, valeur, valuelen, index1, index2, ierr)
886 !
887  TYPE(instance_t2d), INTENT(INOUT) :: INST
888  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
889  INTEGER, INTENT(IN) :: VALUELEN
890  INTEGER, INTENT(IN) :: INDEX1
891  INTEGER, INTENT(IN) :: INDEX2
892  CHARACTER, INTENT(IN) :: VALEUR(valuelen)
893  INTEGER, INTENT(OUT) :: IERR
894 !
895  INTEGER I,J
896 !
897  ierr = 0
898  IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
899  i = inst%T2DRES
900  DO j=1,valuelen
901  inst%T2D_FILES(i)%NAME(j:j) = valeur(j)
902  ENDDO
903  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
904  i = inst%T2DGEO
905  DO j=1,valuelen
906  inst%T2D_FILES(i)%NAME(j:j) = valeur(j)
907  ENDDO
908  ELSE IF(trim(varname).EQ.'MODEL.METEOFILE') THEN
909  i = inst%T2ATMB
910  DO j = 1,valuelen
911  inst%T2D_FILES(i)%NAME(j:j) = valeur(j)
912  ENDDO
913  ELSE IF(trim(varname).EQ.'MODEL.FO2FILE') THEN
914  i = inst%T2DFO2
915  DO j = 1,valuelen
916  inst%T2D_FILES(i)%NAME(j:j) = valeur(j)
917  ENDDO
918  ELSE IF(trim(varname).EQ.'MODEL.LIQBCFILE') THEN
919  i = inst%T2DIMP
920  DO j = 1,valuelen
921  inst%T2D_FILES(i)%NAME(j:j) = valeur(j)
922  ENDDO
923  ELSE IF(trim(varname).EQ.'MODEL.PREFILE') THEN
924  DO j=1,valuelen
925  inst%T2D_FILES(inst%T2DPRE)%NAME(j:j) = valeur(j)
926  ENDDO
927  ! <set_string>
928  ELSE
929  ierr = unknown_var_error
930  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
931  ENDIF
932 !
933  END SUBROUTINE set_string_t2d_d
934 !
935  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
937  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
946  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
947  SUBROUTINE get_boolean_t2d_d
948  & (inst, varname, valeur, index1, index2, index3, ierr)
949 !
950  TYPE(instance_t2d), INTENT(IN) :: INST
951  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
952  INTEGER, INTENT(OUT) :: VALEUR
953  INTEGER, INTENT(IN) :: INDEX1
954  INTEGER, INTENT(IN) :: INDEX2
955  INTEGER, INTENT(IN) :: INDEX3
956  INTEGER, INTENT(OUT) :: IERR
957 !
958  ierr = 0
959  valeur = 0
960  IF(trim(varname).EQ.'MODEL.DEBUG') THEN
961  valeur = inst%DEBUG
962  ELSE IF(trim(varname).EQ.'MODEL.RAZTIM') THEN
963  IF(inst%RAZTIM) THEN
964  valeur = 0
965  ELSE
966  valeur = 1
967  ENDIF
968  ! <get_boolean>
969  ELSE
970  ierr = unknown_var_error
971  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
972  ENDIF
973 !
974  END SUBROUTINE get_boolean_t2d_d
975 !
976  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
978  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
987  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
988  SUBROUTINE set_boolean_t2d_d
989  & (inst, varname, valeur, index1, index2, index3, ierr)
990 !
991  TYPE(instance_t2d), INTENT(INOUT) :: INST
992  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
993  INTEGER, INTENT(IN) :: VALEUR
994  INTEGER, INTENT(IN) :: INDEX1
995  INTEGER, INTENT(IN) :: INDEX2
996  INTEGER, INTENT(IN) :: INDEX3
997  INTEGER, INTENT(OUT) :: IERR
998 !
999  ierr = 0
1000  IF(trim(varname).EQ.'MODEL.DEBUG') THEN
1001  inst%DEBUG = valeur
1002  ELSE IF(trim(varname).EQ.'MODEL.RAZTIM') THEN
1003  inst%RAZTIM = valeur.EQ.0
1004  ! <set_boolean>
1005  ELSE
1006  ierr = unknown_var_error
1007  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1008  ENDIF
1009 !
1010  END SUBROUTINE set_boolean_t2d_d
1011 !
1012  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1014  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1022  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1023  SUBROUTINE get_var_size_t2d_d
1024  & (inst, varname, dim1, dim2, dim3, ierr)
1025 !
1026  TYPE(instance_t2d), INTENT(IN) :: INST
1027  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
1028  INTEGER, INTENT(OUT) :: DIM1
1029  INTEGER, INTENT(OUT) :: DIM2
1030  INTEGER, INTENT(OUT) :: DIM3
1031  INTEGER, INTENT(OUT) :: IERR
1032 !
1033  INTEGER :: TWODIM(2)
1034 
1035  ierr = 0
1036  dim1 = 0
1037  dim2 = 0
1038  dim3 = 0
1039 !
1040  IF(trim(varname).EQ.'MODEL.HBOR') THEN
1041  dim1 = inst%HBOR%DIM1
1042  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
1043  dim1 = inst%UBOR%DIM1
1044  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
1045  dim1 = inst%VBOR%DIM1
1046  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
1047  dim1 = inst%MESH%XNEBOR%DIM1
1048  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
1049  dim1 = inst%MESH%YNEBOR%DIM1
1050  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
1051  dim1 = inst%H%DIM1
1052  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
1053  dim1 = inst%DH%DIM1
1054  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
1055  dim1 = inst%ZF%DIM1
1056  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
1057  dim1 = inst%U%DIM1
1058  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
1059  dim1 = inst%V%DIM1
1060  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
1061  dim1 = inst%MESH%KP1BOR%DIM1
1062  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
1063  dim1 = inst%MESH%X%DIM1
1064  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
1065  dim1 = inst%MESH%Y%DIM1
1066  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
1067  dim1 = SIZE(inst%TE5%R)
1068  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
1069  dim1 = inst%MESH%NBOR%DIM1
1070  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
1071  dim1 = inst%NUMLIQ%DIM1
1072  ELSE IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
1073  dim1 = inst%LIHBOR%DIM1
1074  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
1075  dim1 = inst%LIUBOR%DIM1
1076  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
1077  dim1 = inst%LIVBOR%DIM1
1078  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
1079  dim1 = SIZE(inst%COTE)
1080  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
1081  dim1 = SIZE(inst%DEBIT)
1082  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
1083  dim1 = SIZE(inst%FLUX_BOUNDARIES)
1084  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
1085  dim1 = SIZE(inst%CHESTR%R)
1086  ELSE IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
1087  dim1 = 250
1088  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
1089  dim1 = 20
1090  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
1091  dim1 = 250
1092  ELSE IF(trim(varname).EQ.'MODEL.METEOFILE') THEN
1093  dim1 = 250
1094  ELSE IF(trim(varname).EQ.'MODEL.FO2FILE') THEN
1095  dim1 = 250
1096  ELSE IF(trim(varname).EQ.'MODEL.PREFILE') THEN
1097  dim1 = 250
1098  ELSE IF(trim(varname).EQ.'MODEL.LIQBCFILE') THEN
1099  dim1 = 250
1100  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE')THEN
1101  dim1 = SIZE(inst%BND_TIDE)
1102  ELSE IF(trim(varname).EQ.'MODEL.IKLE')THEN
1103  ! This is to have it properly (ndp, nelem)
1104  dim1 = inst%MESH%IKLE%DIM2
1105  dim2 = inst%MESH%IKLE%DIM1
1106  ELSE IF(trim(varname).EQ.'MODEL.NACHB')THEN
1107  dim1 = inst%NPTIR
1108  dim2 = inst%NBMAXNSHARE
1109  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
1110  dim1 = inst%MESH%KNOLG%DIM1
1111  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
1112  dim1 = inst%AK%DIM1
1113  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
1114  dim1 = inst%EP%DIM1
1115  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
1116  dim1 = inst%H0%DIM1
1117  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
1118  dim1 = inst%T%N
1119  dim2 = inst%T%ADR(1)%P%DIM1
1120  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
1121  dim1 = inst%Q%DIM1
1122  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
1123  dim1 = SIZE(inst%DCLA)
1124  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
1125  dim1 = SIZE(inst%AC)
1126  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
1127  dim1 = SIZE(inst%XWC)
1128  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
1129  dim1 = inst%Z%DIM1
1130  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
1131  dim1 = inst%QBOR%N
1132  dim2 = inst%QBOR%ADR(1)%P%DIM1
1133  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
1134  dim1 = inst%EBOR%N
1135  dim2 = inst%EBOR%ADR(1)%P%DIM1
1136  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
1137  dim1 = inst%FLBOR%DIM1
1138  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
1139  dim1 = inst%TOB%DIM1
1140  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
1141  dim1 = inst%CLU%DIM1
1142  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
1143  dim1 = inst%CLV%DIM1
1144  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
1145  dim1 = inst%LIQBOR%DIM1
1146  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
1147  dim1 = inst%LIEBOR%DIM1
1148  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
1149  dim1 = inst%E%DIM1
1150  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
1151  twodim = shape(inst%PARTHENIADES)
1152  dim1 = twodim(1)
1153  dim2 = twodim(2)
1154  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
1155  dim1 = SIZE(inst%MARDAT)
1156  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
1157  dim1 = SIZE(inst%MARTIM)
1158  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
1159  dim1 = inst%VOLU2D%DIM1
1160  ! <get_var_size>
1161  ENDIF
1162 !
1163  END SUBROUTINE get_var_size_t2d_d
1164 !
1165  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1167  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1182  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1183  SUBROUTINE get_var_type_t2d_d
1184  & (varname, vartype, readonly, ndim,ient,jent,kent,
1185  & getpos,setpos,ierr)
1186 !
1187  CHARACTER(LEN=T2D_VAR_LEN), INTENT(IN) :: VARNAME
1188  CHARACTER(LEN=T2D_TYPE_LEN), INTENT(OUT) :: VARTYPE
1189  LOGICAL, INTENT(OUT) :: READONLY
1190  INTEGER, INTENT(OUT) :: NDIM
1191  INTEGER, INTENT(OUT) :: IERR
1192  INTEGER, INTENT(OUT) :: IENT
1193  INTEGER, INTENT(OUT) :: JENT
1194  INTEGER, INTENT(OUT) :: KENT
1195  INTEGER, INTENT(OUT) :: GETPOS
1196  INTEGER, INTENT(OUT) :: SETPOS
1197 !
1198  ierr = 0
1199  vartype = ''
1200  readonly = .true.
1201  ndim = 0
1202  ient = 0
1203  jent = 0
1204  kent = 0
1205  getpos = no_position
1206  setpos = no_position
1207 !
1208  IF(trim(varname).EQ.'MODEL.AT') THEN
1209  vartype = 'DOUBLE'
1210  readonly = .false.
1211  ndim = 0
1212  getpos = run_allocation_pos
1213  setpos = run_allocation_pos
1214  ELSE IF(trim(varname).EQ.'MODEL.DT') THEN
1215  vartype = 'DOUBLE'
1216  readonly = .false.
1217  ndim = 0
1218  getpos = run_allocation_pos
1219  setpos = run_allocation_pos
1220  ELSE IF(trim(varname).EQ.'MODEL.BCFILE') THEN
1221  vartype = 'STRING'
1222  readonly = .false.
1223  ndim = 0
1224  getpos = run_read_case_pos
1225  setpos = run_read_case_pos
1226  ELSE IF(trim(varname).EQ.'MODEL.GRAPH_PERIOD') THEN
1227  vartype = 'INTEGER'
1228  readonly = .false.
1229  ndim = 0
1230  getpos = run_read_case_pos
1231  setpos = run_read_case_pos
1232  ELSE IF(trim(varname).EQ.'MODEL.LISTIN_PERIOD') THEN
1233  vartype = 'INTEGER'
1234  readonly = .false.
1235  ndim = 0
1236  getpos = run_read_case_pos
1237  setpos = run_read_case_pos
1238  ELSE IF(trim(varname).EQ.'MODEL.CPL_PERIOD') THEN
1239  vartype = 'INTEGER'
1240  readonly = .false.
1241  ndim = 0
1242  getpos = run_read_case_pos
1243  setpos = run_read_case_pos
1244  ELSE IF(trim(varname).EQ.'MODEL.DEBUG') THEN
1245  vartype = 'INTEGER'
1246  readonly = .false.
1247  ndim = 0
1248  getpos = run_set_config_pos
1249  setpos = run_set_config_pos
1250  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
1251  vartype = 'INTEGER'
1252  readonly = .false.
1253  ndim = 1
1254  getpos = run_allocation_pos
1255  setpos = run_allocation_pos
1256  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
1257  vartype = 'DOUBLE'
1258  readonly = .false.
1259  ndim = 1
1260  getpos = run_timestep_pos
1261  setpos = run_allocation_pos
1262  ELSE IF(trim(varname).EQ.'MODEL.HBOR') THEN
1263  vartype = 'DOUBLE'
1264  readonly = .false.
1265  ndim = 1
1266  ient = 1
1267  getpos = run_allocation_pos
1268  setpos = run_allocation_pos
1269  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
1270  vartype = 'INTEGER'
1271  readonly = .false.
1272  ndim = 1
1273  ient = 1
1274  getpos = run_allocation_pos
1275  setpos = run_allocation_pos
1276  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
1277  vartype = 'INTEGER'
1278  readonly = .false.
1279  ndim = 1
1280  ient = 1
1281  getpos = run_allocation_pos
1282  setpos = run_allocation_pos
1283  ELSE IF(trim(varname).EQ.'MODEL.UBOR') THEN
1284  vartype = 'DOUBLE'
1285  readonly = .false.
1286  ndim = 1
1287  ient = 1
1288  getpos = run_allocation_pos
1289  setpos = run_allocation_pos
1290  ELSE IF(trim(varname).EQ.'MODEL.VBOR') THEN
1291  vartype = 'DOUBLE'
1292  readonly = .false.
1293  ndim = 1
1294  ient = 1
1295  getpos = run_allocation_pos
1296  setpos = run_allocation_pos
1297  ELSE IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
1298  vartype = 'INTEGER'
1299  readonly = .false.
1300  ndim = 1
1301  getpos = run_allocation_pos
1302  setpos = run_allocation_pos
1303  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
1304  vartype = 'INTEGER'
1305  readonly = .false.
1306  ndim = 1
1307  getpos = run_allocation_pos
1308  setpos = run_allocation_pos
1309  ELSE IF(trim(varname).EQ.'MODEL.LIUBOR') THEN
1310  vartype = 'INTEGER'
1311  readonly = .false.
1312  ndim = 1
1313  getpos = run_allocation_pos
1314  setpos = run_allocation_pos
1315  ELSE IF(trim(varname).EQ.'MODEL.LIVBOR') THEN
1316  vartype = 'INTEGER'
1317  readonly = .false.
1318  ndim = 1
1319  getpos = run_allocation_pos
1320  setpos = run_allocation_pos
1321  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
1322  vartype = 'INTEGER'
1323  readonly = .true.
1324  ndim = 2
1325  getpos = run_allocation_pos
1326  setpos = run_allocation_pos
1327  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
1328  vartype = 'INTEGER'
1329  readonly = .true.
1330  ndim = 2
1331  getpos = run_allocation_pos
1332  setpos = run_allocation_pos
1333  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
1334  vartype = 'INTEGER'
1335  readonly = .true.
1336  ndim = 1
1337  getpos = run_allocation_pos
1338  setpos = run_allocation_pos
1339  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
1340  vartype = 'INTEGER'
1341  readonly = .false.
1342  ndim = 0
1343  getpos = run_allocation_pos
1344  setpos = run_allocation_pos
1345  ELSE IF(trim(varname).EQ.'MODEL.NBMAXNSHARE') THEN
1346  vartype = 'INTEGER'
1347  readonly = .false.
1348  ndim = 0
1349  getpos = run_allocation_pos
1350  setpos = run_allocation_pos
1351  ELSE IF(trim(varname).EQ.'MODEL.COMPLEO') THEN
1352  vartype = 'INTEGER'
1353  readonly = .false.
1354  ndim = 0
1355  getpos = run_allocation_pos
1356  setpos = run_allocation_pos
1357  ELSE IF(trim(varname).EQ.'MODEL.PTINIG') THEN
1358  vartype = 'INTEGER'
1359  readonly = .false.
1360  ndim = 0
1361  getpos = run_allocation_pos
1362  setpos = run_allocation_pos
1363  ELSE IF(trim(varname).EQ.'MODEL.NPTIR') THEN
1364  vartype = 'INTEGER'
1365  readonly = .false.
1366  ndim = 0
1367  getpos = run_allocation_pos
1368  setpos = run_allocation_pos
1369  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
1370  vartype = 'DOUBLE'
1371  readonly = .false.
1372  ndim = 1
1373  ient = 1
1374  getpos = run_allocation_pos
1375  setpos = run_allocation_pos
1376  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
1377  vartype = 'DOUBLE'
1378  readonly = .false.
1379  ndim = 1
1380  ient = 1
1381  getpos = run_allocation_pos
1382  setpos = run_allocation_pos
1383  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
1384  vartype = 'DOUBLE'
1385  readonly = .false.
1386  ndim = 1
1387  ient = 1
1388  getpos = run_timestep_pos
1389  setpos = run_allocation_pos
1390  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
1391  vartype = 'DOUBLE'
1392  readonly = .false.
1393  ndim = 1
1394  ient = 1
1395  getpos = run_timestep_pos
1396  setpos = run_allocation_pos
1397  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
1398  vartype = 'DOUBLE'
1399  readonly = .false.
1400  ndim = 1
1401  ient = 1
1402  getpos = run_timestep_pos
1403  setpos = run_allocation_pos
1404  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
1405  vartype = 'DOUBLE'
1406  readonly = .false.
1407  ndim = 1
1408  ient = 1
1409  getpos = run_timestep_pos
1410  setpos = run_allocation_pos
1411  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
1412  vartype = 'DOUBLE'
1413  readonly = .false.
1414  ndim = 1
1415  ient = 1
1416  getpos = run_timestep_pos
1417  setpos = run_allocation_pos
1418  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
1419  vartype = 'DOUBLE'
1420  readonly = .false.
1421  ndim = 1
1422  ient = 1
1423  getpos = run_allocation_pos
1424  setpos = run_allocation_pos
1425  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
1426  vartype = 'DOUBLE'
1427  readonly = .false.
1428  ndim = 1
1429  ient = 1
1430  getpos = run_allocation_pos
1431  setpos = run_allocation_pos
1432  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
1433  vartype = 'DOUBLE'
1434  readonly = .false.
1435  ndim = 1
1436  ient = 1
1437  getpos = run_timestep_pos
1438  setpos = run_allocation_pos
1439  ELSE IF(trim(varname).EQ.'MODEL.POROSITY') THEN
1440  vartype = 'DOUBLE'
1441  readonly = .false.
1442  ndim = 1
1443  ient = 1
1444  getpos = run_allocation_pos
1445  setpos = run_allocation_pos
1446  ELSE IF(trim(varname).EQ.'MODEL.COTE') THEN
1447  vartype = 'DOUBLE'
1448  readonly = .false.
1449  ndim = 1
1450  getpos = run_timestep_pos
1451  setpos = run_allocation_pos
1452  ELSE IF(trim(varname).EQ.'MODEL.DEBIT') THEN
1453  vartype = 'DOUBLE'
1454  readonly = .false.
1455  ndim = 1
1456  getpos = run_timestep_pos
1457  setpos = run_allocation_pos
1458  ELSE IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
1459  vartype = 'STRING'
1460  readonly = .false.
1461  ndim = 1
1462  getpos = run_allocation_pos
1463  setpos = run_allocation_pos
1464  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
1465  vartype = 'STRING'
1466  readonly = .false.
1467  ndim = 1
1468  getpos = run_allocation_pos
1469  setpos = run_allocation_pos
1470  ELSE IF(trim(varname).EQ.'MODEL.METEOFILE') THEN
1471  vartype = 'STRING'
1472  readonly = .false.
1473  ndim = 1
1474  getpos = run_allocation_pos
1475  setpos = run_allocation_pos
1476  ELSE IF(trim(varname).EQ.'MODEL.FO2FILE') THEN
1477  vartype = 'STRING'
1478  readonly = .false.
1479  ndim = 1
1480  getpos = run_allocation_pos
1481  setpos = run_allocation_pos
1482  ELSE IF(trim(varname).EQ.'MODEL.PREFILE') THEN
1483  vartype = 'STRING'
1484  readonly = .false.
1485  ndim = 1
1486  getpos = run_allocation_pos
1487  setpos = run_allocation_pos
1488  ELSE IF(trim(varname).EQ.'MODEL.LIQBCFILE') THEN
1489  vartype = 'STRING'
1490  readonly = .false.
1491  ndim = 1
1492  getpos = run_allocation_pos
1493  setpos = run_allocation_pos
1494  ELSE IF(trim(varname).EQ.'MODEL.CHESTR') THEN
1495  vartype = 'DOUBLE'
1496  readonly = .false.
1497  ndim = 1
1498  ient = 1
1499  getpos = run_allocation_pos
1500  setpos = run_allocation_pos
1501  ELSE IF(trim(varname).EQ.'MODEL.FAIR') THEN
1502  vartype = 'DOUBLE'
1503  readonly = .false.
1504  ient = 1
1505  getpos = run_allocation_pos
1506  setpos = run_allocation_pos
1507  ELSE IF(trim(varname).EQ.'MODEL.NPOIN') THEN
1508  vartype = 'INTEGER'
1509  readonly = .false.
1510  getpos = run_allocation_pos
1511  setpos = run_allocation_pos
1512  ELSE IF(trim(varname).EQ.'MODEL.NELEM') THEN
1513  vartype = 'INTEGER'
1514  readonly = .false.
1515  getpos = run_allocation_pos
1516  setpos = run_allocation_pos
1517  ELSE IF(trim(varname).EQ.'MODEL.NELMAX') THEN
1518  vartype = 'INTEGER'
1519  readonly = .false.
1520  getpos = run_allocation_pos
1521  setpos = run_allocation_pos
1522  ELSE IF(trim(varname).EQ.'MODEL.NPTFR') THEN
1523  vartype = 'INTEGER'
1524  readonly = .false.
1525  getpos = run_allocation_pos
1526  setpos = run_allocation_pos
1527  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
1528  vartype = 'DOUBLE'
1529  readonly = .false.
1530  ndim = 0
1531  getpos = run_allocation_pos
1532  setpos = run_allocation_pos
1533  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
1534  vartype = 'DOUBLE'
1535  readonly = .false.
1536  ndim = 0
1537  getpos = run_allocation_pos
1538  setpos = run_allocation_pos
1539  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
1540  vartype = 'DOUBLE'
1541  readonly = .false.
1542  ndim = 0
1543  getpos = run_allocation_pos
1544  setpos = run_allocation_pos
1545  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
1546  vartype = 'INTEGER'
1547  readonly = .false.
1548  ndim = 0
1549  getpos = run_read_case_pos
1550  setpos = run_read_case_pos
1551  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
1552  vartype = 'STRING'
1553  readonly = .true.
1554  ndim = 1
1555  getpos = run_read_case_pos
1556  setpos = run_read_case_pos
1557  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
1558  vartype = 'DOUBLE'
1559  readonly = .false.
1560  ndim = 1
1561  ient = 1
1562  getpos = run_timestep_pos
1563  setpos = run_allocation_pos
1564  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
1565  vartype = 'DOUBLE'
1566  readonly = .false.
1567  ndim = 1
1568  ient = 1
1569  getpos = run_timestep_pos
1570  setpos = run_allocation_pos
1571  ELSE IF(trim(varname).EQ.'MODEL.ITURB') THEN
1572  vartype = 'INTEGER'
1573  readonly = .false.
1574  ndim = 0
1575  getpos = run_allocation_pos
1576  setpos = run_allocation_pos
1577  ELSE IF(trim(varname).EQ.'MODEL.INIT_DEPTH') THEN
1578  vartype = 'DOUBLE'
1579  readonly = .false.
1580  ndim = 1
1581  getpos = no_position
1582  setpos = no_position
1583  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
1584  vartype = 'DOUBLE_BLOCK'
1585  readonly = .false.
1586  ndim = 2
1587  getpos = no_position
1588  setpos = no_position
1589  ELSE IF(trim(varname).EQ.'MODEL.NTRAC') THEN
1590  vartype = 'INTEGER'
1591  readonly = .false.
1592  ndim = 0
1593  getpos = no_position
1594  setpos = no_position
1595  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
1596  vartype = 'DOUBLE'
1597  readonly = .false.
1598  ndim = 1
1599  getpos = no_position
1600  setpos = no_position
1601  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
1602  vartype = 'DOUBLE'
1603  readonly = .false.
1604  ndim = 1
1605  getpos = no_position
1606  setpos = no_position
1607  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
1608  vartype = 'DOUBLE'
1609  readonly = .false.
1610  ndim = 1
1611  getpos = no_position
1612  setpos = no_position
1613  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
1614  vartype = 'DOUBLE'
1615  readonly = .false.
1616  ndim = 1
1617  getpos = no_position
1618  setpos = no_position
1619  ELSE IF(trim(varname).EQ.'MODEL.Z') THEN
1620  vartype = 'DOUBLE'
1621  readonly = .false.
1622  ndim = 1
1623  getpos = no_position
1624  setpos = no_position
1625  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
1626  vartype = ''
1627  readonly = .false.
1628  ndim = 1
1629  getpos = no_position
1630  setpos = no_position
1631  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
1632  vartype = ''
1633  readonly = .false.
1634  ndim = 1
1635  getpos = no_position
1636  setpos = no_position
1637  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
1638  vartype = 'DOUBLE'
1639  readonly = .false.
1640  ndim = 1
1641  getpos = no_position
1642  setpos = no_position
1643  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
1644  vartype = 'DOUBLE'
1645  readonly = .false.
1646  ndim = 1
1647  getpos = no_position
1648  setpos = no_position
1649  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
1650  vartype = 'INTEGER'
1651  readonly = .false.
1652  ndim = 1
1653  getpos = no_position
1654  setpos = no_position
1655  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
1656  vartype = 'INTEGER'
1657  readonly = .false.
1658  ndim = 1
1659  getpos = no_position
1660  setpos = no_position
1661  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
1662  vartype = 'INTEGER'
1663  readonly = .false.
1664  ndim = 1
1665  getpos = no_position
1666  setpos = no_position
1667  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
1668  vartype = 'INTEGER'
1669  readonly = .false.
1670  ndim = 1
1671  getpos = no_position
1672  setpos = no_position
1673  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
1674  vartype = 'INTEGER'
1675  readonly = .false.
1676  ndim = 0
1677  getpos = no_position
1678  setpos = no_position
1679  ELSE IF(trim(varname).EQ.'MODEL.NOMBLAY') THEN
1680  vartype = 'INTEGER'
1681  readonly = .false.
1682  ndim = 0
1683  getpos = no_position
1684  setpos = no_position
1685  ELSE IF(trim(varname).EQ.'MODEL.CONCENTRATION') THEN
1686  vartype = ''
1687  readonly = .false.
1688  ndim = 1
1689  getpos = no_position
1690  setpos = no_position
1691  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
1692  vartype = 'DOUBLE'
1693  readonly = .false.
1694  ndim = 1
1695  getpos = no_position
1696  setpos = no_position
1697  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
1698  vartype = 'DOUBLE'
1699  readonly = .false.
1700  ndim = 2
1701  getpos = no_position
1702  setpos = no_position
1703  ELSE IF(trim(varname).EQ.'MODEL.MARDAT') THEN
1704  vartype = 'INTEGER'
1705  readonly = .false.
1706  ndim = 1
1707  getpos = no_position
1708  setpos = no_position
1709  ELSE IF(trim(varname).EQ.'MODEL.MARTIM') THEN
1710  vartype = 'INTEGER'
1711  readonly = .false.
1712  ndim = 1
1713  getpos = no_position
1714  setpos = no_position
1715  ELSE IF(trim(varname).EQ.'MODEL.RAZTIM') THEN
1716  vartype = 'BOOLEAN'
1717  readonly = .false.
1718  ndim = 0
1719  getpos = no_position
1720  setpos = no_position
1721  ELSE IF(trim(varname).EQ.'MODEL.START_RECORD') THEN
1722  vartype = 'INTEGER'
1723  readonly = .false.
1724  ndim = 0
1725  getpos = no_position
1726  setpos = no_position
1727  ELSE IF(trim(varname).EQ.'MODEL.VOLU2D') THEN
1728  vartype = 'DOUBLE'
1729  readonly = .false.
1730  ndim = 1
1731  getpos = no_position
1732  setpos = no_position
1733  ELSE IF(trim(varname).EQ.'MODEL.PROPNU') THEN
1734  vartype = 'DOUBLE'
1735  readonly = .false.
1736  ndim = 0
1737  getpos = no_position
1738  setpos = no_position
1739  ! <get_var_type>
1740  ELSE
1741  ierr = unknown_var_error
1742  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1743  ENDIF
1744 !
1745  END SUBROUTINE get_var_type_t2d_d
1746 !
1747  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1749  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1757  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1758  SUBROUTINE get_var_info_t2d_d(I, VAR_LEN, INFO_LEN,
1759  & VARNAME, VARINFO, IERR)
1760 !
1761  INTEGER, INTENT(IN) :: I
1762  INTEGER, INTENT(IN) :: VAR_LEN
1763  INTEGER, INTENT(IN) :: INFO_LEN
1764  CHARACTER, INTENT(OUT) :: VARNAME(var_len)
1765  CHARACTER, INTENT(OUT) :: VARINFO(info_len)
1766  INTEGER, INTENT(OUT) :: IERR
1767 !
1768  INTEGER :: J
1769 !
1770  ierr = 0
1771 
1772  DO j=1,t2d_var_len
1773  varname(j:j) = vname_t2d(i)(j:j)
1774  ENDDO
1775  DO j=1,t2d_info_len
1776  varinfo(j:j) = vinfo_t2d(i)(j:j)
1777  ENDDO
1778 
1779  RETURN
1780  END SUBROUTINE get_var_info_t2d_d
1781 !
1782  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1784  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1787  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1788  SUBROUTINE set_var_list_t2d_d(IERR)
1789 !
1790  INTEGER, INTENT(OUT) :: IERR
1791 !
1792  INTEGER :: I
1793 !
1794  i=0
1795  ierr = 0
1796  IF(.NOT.ALLOCATED(vname_t2d)) THEN
1797  ALLOCATE(vname_t2d(nb_var_t2d),stat=ierr)
1798  IF(ierr.NE.0) RETURN
1799  ALLOCATE(vinfo_t2d(nb_var_t2d),stat=ierr)
1800  IF(ierr.NE.0) RETURN
1801 !
1802  i = i + 1
1803  vname_t2d(i) = 'MODEL.AT'
1804  vinfo_t2d(i) = 'CURRENT TIME'
1805  i = i + 1
1806  vname_t2d(i) = 'MODEL.DT'
1807  vinfo_t2d(i) = 'TIME STEP'
1808  i = i + 1
1809  vname_t2d(i) = 'MODEL.BCFILE'
1810  vinfo_t2d(i) = 'BOUNDARY CONDITION FILE NAME'
1811  i = i + 1
1812  vname_t2d(i) = 'MODEL.BND_TIDE'
1813  vinfo_t2d(i) = 'OPTION FOR TIDAL BOUNDARY CONDITIONS'
1814  i = i + 1
1815  vname_t2d(i) = 'MODEL.BOTTOMELEVATION'
1816  vinfo_t2d(i) = 'LEVEL OF THE BOTTOM'
1817  i = i + 1
1818  vname_t2d(i) = 'MODEL.CHESTR'
1819  vinfo_t2d(i) = 'STRIKLER ON POINT'
1820  i = i + 1
1821  vname_t2d(i) = 'MODEL.FAIR'
1822  vinfo_t2d(i) = 'FAIR ON POINT'
1823  i = i + 1
1824  vname_t2d(i) = 'MODEL.COTE'
1825  vinfo_t2d(i) = 'xxx'
1826  i = i + 1
1827  vname_t2d(i) = 'MODEL.CPL_PERIOD'
1828  vinfo_t2d(i) = 'COUPLING PERIOD WITH SISYPHE'
1829  i = i + 1
1830  vname_t2d(i) = 'MODEL.DEBIT'
1831  vinfo_t2d(i) = 'DISCHARGE ON FRONTIER'
1832  i = i + 1
1833  vname_t2d(i) = 'MODEL.DEBUG'
1834  vinfo_t2d(i) = 'ACTIVATING DEBUG MODE'
1835  i = i + 1
1836  vname_t2d(i) = 'MODEL.FLUX_BOUNDARIES'
1837  vinfo_t2d(i) = 'FLUX AT BOUNDARIES'
1838  i = i + 1
1839  vname_t2d(i) = 'MODEL.GEOMETRYFILE'
1840  vinfo_t2d(i) = 'NAME OF THE GEOMERY FILE'
1841  i = i + 1
1842  vname_t2d(i) = 'MODEL.METEOFILE'
1843  vinfo_t2d(i) = 'NAME OF THE BINARY ATMOSPHERIC FILE'
1844  i = i + 1
1845  vname_t2d(i) = 'MODEL.FO2FILE'
1846  vinfo_t2d(i) = 'NAME OF THE FORMATTED DATA FILE 2'
1847  i = i + 1
1848  vname_t2d(i) = 'MODEL.LIQBCFILE'
1849  vinfo_t2d(i) = 'NAME OF THE LIQUID BOUNDARIES FILE'
1850  i = i + 1
1851  vname_t2d(i) = 'MODEL.PREFILE'
1852  vinfo_t2d(i) = 'NAME OF THE PREVIOUS COMPUTATION FILE'
1853  i = i + 1
1854  vname_t2d(i) = 'MODEL.GRAPH_PERIOD'
1855  vinfo_t2d(i) = 'GRAPHICAL OUTPUT PERIOD'
1856  i = i + 1
1857  vname_t2d(i) = 'MODEL.HBOR'
1858  vinfo_t2d(i) = 'BOUNDARY VALUE ON H FOR EACH BOUNDARY POINT'
1859  i = i + 1
1860  vname_t2d(i) = 'MODEL.IKLE'
1861  vinfo_t2d(i) = 'CONNECTIVITY TABLE BETWEEN ELEMENT AND NODES'
1862  i = i + 1
1863  vname_t2d(i) = 'MODEL.NACHB'
1864  vinfo_t2d(i) = 'NUMBERS OF PROC CONTAINING A GIVEN POINT'
1865  i = i + 1
1866  vname_t2d(i) = 'MODEL.KNOLG'
1867  vinfo_t2d(i) =
1868  & 'GIVES THE INITIAL GLOBAL NUMBER OF A LOCAL POINT'
1869  i = i + 1
1870  vname_t2d(i) = 'MODEL.INCWATERDEPTH'
1871  vinfo_t2d(i) = 'INCREASE IN THE THE DEPTH OF THE WATER'
1872  i = i + 1
1873  vname_t2d(i) = 'MODEL.KP1BOR'
1874  vinfo_t2d(i) =
1875  & 'POINTS FOLLOWING AND PRECEDING A BOUNDARY POINT'
1876  i = i + 1
1877  vname_t2d(i) = 'MODEL.LIHBOR'
1878  vinfo_t2d(i) = 'BOUNDARY TYPE ON H FOR EACH BOUNDARY POINT'
1879  i = i + 1
1880  vname_t2d(i) = 'MODEL.LISTIN_PERIOD'
1881  vinfo_t2d(i) = 'LISTING OUTPUT PERIOD'
1882  i = i + 1
1883  vname_t2d(i) = 'MODEL.LIUBOR'
1884  vinfo_t2d(i) = 'BOUNDARY TYPE ON U FOR EACH BOUNDARY POINT'
1885  i = i + 1
1886  vname_t2d(i) = 'MODEL.LIVBOR'
1887  vinfo_t2d(i) = 'BOUNDARY TYPE ON V FOR EACH BOUNDARY POINT'
1888  i = i + 1
1889  vname_t2d(i) = 'MODEL.LT'
1890  vinfo_t2d(i) = 'CURRENT TIME STEP'
1891  i = i + 1
1892  vname_t2d(i) = 'MODEL.NBMAXNSHARE'
1893  vinfo_t2d(i) = 'MAXIMUM GEOMETRICAL MULTIPLICITY OF A NODE'
1894  i = i + 1
1895  vname_t2d(i) = 'MODEL.COMPLEO'
1896  vinfo_t2d(i) = 'GRAPHIC OUTPUT COUNTER'
1897  i = i + 1
1898  vname_t2d(i) = 'MODEL.PTINIG'
1899  vinfo_t2d(i) =
1900  & 'NUMBER OF FIRST TIME STEP FOR GRAPHIC PRINTOUTS'
1901  i = i + 1
1902  vname_t2d(i) = 'MODEL.NPTIR'
1903  vinfo_t2d(i) = 'NUMBER OF INTERFACE POINTS OF THE SUB-DOMAIN'
1904  i = i + 1
1905  vname_t2d(i) = 'MODEL.NBOR'
1906  vinfo_t2d(i) = 'GLOBAL NUMBER OF BOUNDARY POINTS'
1907  i = i + 1
1908  vname_t2d(i) = 'MODEL.NELEM'
1909  vinfo_t2d(i) = 'NUMBER OF ELEMENT IN THE MESH'
1910  i = i + 1
1911  vname_t2d(i) = 'MODEL.NELMAX'
1912  vinfo_t2d(i) = 'MAXIMUM NUMBER OF ELEMENTS ENVISAGED'
1913  i = i + 1
1914  vname_t2d(i) = 'MODEL.NPOIN'
1915  vinfo_t2d(i) = 'NUMBER OF POINT IN THE MESH'
1916  i = i + 1
1917  vname_t2d(i) = 'MODEL.NPTFR'
1918  vinfo_t2d(i) = 'NUMBER OF BOUNDARY POINTS'
1919  i = i + 1
1920  vname_t2d(i) = 'MODEL.NTIMESTEPS'
1921  vinfo_t2d(i) = 'NUMBER OF TIME STEPS'
1922  i = i + 1
1923  vname_t2d(i) = 'MODEL.NUMLIQ'
1924  vinfo_t2d(i) = 'LIQUID BOUNDARY NUMBERS'
1925  i = i + 1
1926  vname_t2d(i) = 'MODEL.POROSITY'
1927  vinfo_t2d(i) = 'POROSITY'
1928  i = i + 1
1929  vname_t2d(i) = 'MODEL.RESULTFILE'
1930  vinfo_t2d(i) = 'NAME OF THE RESULT FILE'
1931  i = i + 1
1932  vname_t2d(i) = 'MODEL.SEALEVEL'
1933  vinfo_t2d(i) = 'COEFFICIENT TO CALIBRATE SEA LEVEL'
1934  i = i + 1
1935  vname_t2d(i) = 'MODEL.TIDALRANGE'
1936  vinfo_t2d(i) = 'COEFFICIENT TO CALIBRATE TIDAL RANGE'
1937  i = i + 1
1938  vname_t2d(i) = 'MODEL.UBOR'
1939  vinfo_t2d(i) = 'BOUNDARY VALUE ON U FOR EACH BOUNDARY POINT'
1940  i = i + 1
1941  vname_t2d(i) = 'MODEL.VBOR'
1942  vinfo_t2d(i) = 'BOUNDARY VALUE ON V FOR EACH BOUNDARY POINT'
1943  i = i + 1
1944  vname_t2d(i) = 'MODEL.VELOCITYU'
1945  vinfo_t2d(i) = 'VELOCITY ON U'
1946  i = i + 1
1947  vname_t2d(i) = 'MODEL.VELOCITYV'
1948  vinfo_t2d(i) = 'VELOCITY ON V'
1949  i = i + 1
1950  vname_t2d(i) = 'MODEL.WATERDEPTH'
1951  vinfo_t2d(i) = 'DEPTH OF THE WATER'
1952  i = i + 1
1953  vname_t2d(i) = 'MODEL.X'
1954  vinfo_t2d(i) = 'X COORDINATES FOR EACH POINT OF THE MESH'
1955  i = i + 1
1956  vname_t2d(i) = 'MODEL.XNEBOR'
1957  vinfo_t2d(i) = 'NORMAL X TO 1D BOUNDARY POINTS'
1958  i = i + 1
1959  vname_t2d(i) = 'MODEL.Y'
1960  vinfo_t2d(i) = 'Y COORDINATES FOR EACH POINT OF THE MESH'
1961  i = i + 1
1962  vname_t2d(i) = 'MODEL.YNEBOR'
1963  vinfo_t2d(i) = 'NORMAL Y TO 1D BOUNDARY POINTS'
1964  i = i + 1
1965  vname_t2d(i) = 'MODEL.EQUATION'
1966  vinfo_t2d(i) = 'NAME OF THE EQUATION USED'
1967  i = i + 1
1968  vname_t2d(i) = 'MODEL.AK'
1969  vinfo_t2d(i) = 'K '
1970  i = i + 1
1971  vname_t2d(i) = 'MODEL.EP'
1972  vinfo_t2d(i) = 'EPSILON '
1973  i = i + 1
1974  vname_t2d(i) = 'MODEL.ITURB'
1975  vinfo_t2d(i) = 'TURBULENCE MODEL '
1976  i = i + 1
1977  vname_t2d(i) = 'MODEL.INIT_DEPTH'
1978  vinfo_t2d(i) = 'INITIAL DEPTH'
1979  i = i + 1
1980  vname_t2d(i) = 'MODEL.TRACER'
1981  vinfo_t2d(i) = 'TRACERS VALUE'
1982  i = i + 1
1983  vname_t2d(i) = 'MODEL.NTRAC'
1984  vinfo_t2d(i) = 'NUMBER OF TRACERS'
1985  i = i + 1
1986  vname_t2d(i) = 'MODEL.FLOWRATEQ'
1987  vinfo_t2d(i) = 'SOLID TRANSPORT FLOWRATE'
1988  i = i + 1
1989  vname_t2d(i) = 'MODEL.DCLA'
1990  vinfo_t2d(i) = 'MEDIAN GRAIN SIZE'
1991  i = i + 1
1992  vname_t2d(i) = 'MODEL.SHIELDS'
1993  vinfo_t2d(i) = 'CRITICAL SHIELDS PARAMETER'
1994  i = i + 1
1995  vname_t2d(i) = 'MODEL.XWC'
1996  vinfo_t2d(i) = 'SETTLING VELOCITY'
1997  i = i + 1
1998  vname_t2d(i) = 'MODEL.Z'
1999  vinfo_t2d(i) = 'FREE SURFACE ELEVATION'
2000  i = i + 1
2001  vname_t2d(i) = 'MODEL.QBOR'
2002  vinfo_t2d(i) = 'BOUNDARY VALUE ON Q FOR EACH BOUNDARY POINT'
2003  i = i + 1
2004  vname_t2d(i) = 'MODEL.EBOR'
2005  vinfo_t2d(i) = 'BOUNDARY VALUE ON E FOR EACH BOUNDARY POINT'
2006  i = i + 1
2007  vname_t2d(i) = 'MODEL.FLBOR'
2008  vinfo_t2d(i) = 'BOUNDARY VALUE ON ZF FOR EACH BOUNDARY POINT'
2009  i = i + 1
2010  vname_t2d(i) = 'MODEL.TOB'
2011  vinfo_t2d(i) = 'SHEAR STRESS'
2012  i = i + 1
2013  vname_t2d(i) = 'MODEL.CLU'
2014  vinfo_t2d(i) = 'BOUNDARY TYPE ON U FOR EACH BOUNDARY POINT'
2015  i = i + 1
2016  vname_t2d(i) = 'MODEL.CLV'
2017  vinfo_t2d(i) = 'BOUNDARY TYPE ON V FOR EACH BOUNDARY POINT'
2018  i = i + 1
2019  vname_t2d(i) = 'MODEL.LIQBOR'
2020  vinfo_t2d(i) = 'BOUNDARY TYPE ON Q FOR EACH BOUNDARY POINT'
2021  i = i + 1
2022  vname_t2d(i) = 'MODEL.LIEBOR'
2023  vinfo_t2d(i) = 'BOUNDARY TYPE ON E FOR EACH BOUNDARY POINT'
2024  i = i + 1
2025  vname_t2d(i) = 'MODEL.NSICLA'
2026  vinfo_t2d(i) = 'NUMBER OF SIZE-CLASSES OF BED MATERIAL'
2027  i = i + 1
2028  vname_t2d(i) = 'MODEL.NOMBLAY'
2029  vinfo_t2d(i) = 'NUMBER OF LAYER IN THE BED'
2030  i = i + 1
2031  vname_t2d(i) = 'MODEL.CONCENTRATION'
2032  vinfo_t2d(i) = 'CONCENTRATION AT TIME N'
2033  i = i + 1
2034  vname_t2d(i) = 'MODEL.EVOLUTION'
2035  vinfo_t2d(i) = 'EVOLUTION OF BED'
2036  i = i + 1
2037  vname_t2d(i) = 'MODEL.PARTHENIADES'
2038  vinfo_t2d(i) = 'PARTHENIADES EROSION COEFICIANT FOR EACH '//
2039  & 'BED LAYER FOR EADCH CLASS'
2040  i = i + 1
2041  vname_t2d(i) = 'MODEL.MARDAT'
2042  vinfo_t2d(i) = 'A 1 DIMENSIONAL INTEGER ARRAY'
2043  i = i + 1
2044  vname_t2d(i) = 'MODEL.MARTIM'
2045  vinfo_t2d(i) = 'A 1 DIMENSIONAL INTEGER ARRAY'
2046  i = i + 1
2047  vname_t2d(i) = 'MODEL.RAZTIM'
2048  vinfo_t2d(i) = 'A SIMPLE BOOLEAN'
2049  i = i + 1
2050  vname_t2d(i) = 'MODEL.START_RECORD'
2051  vinfo_t2d(i) = 'A SIMPLE INTEGER'
2052  i = i + 1
2053  vname_t2d(i) = 'MODEL.VOLU2D'
2054  vinfo_t2d(i) = 'INTEGRAL OF BASES DOUBLE BIEF_OBJ'
2055  i = i + 1
2056  vname_t2d(i) = 'MODEL.PROPNU'
2057  vinfo_t2d(i) = 'DIFFUSION COEFFICIENT OF VELOCITY'
2058  ! <set_var_list>
2059  IF(i.NE.nb_var_t2d) THEN
2061  RETURN
2062  ENDIF
2063  ENDIF
2064 !
2065  END SUBROUTINE set_var_list_t2d_d
2066 !
2067  END MODULE api_handle_var_t2d
subroutine set_var_list_t2d_d(IERR)
integer, parameter t2d_type_len
Size of the string containing the type of a variable.
integer, parameter nb_var_t2d
The maximum number of variables.
subroutine get_var_size_t2d_d(INST, VARNAME, DIM1, DIM2, DIM3, IERR)
integer, parameter run_set_config_pos
subroutine set_integer_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
integer, parameter run_allocation_pos
integer, parameter run_read_case_pos
integer, parameter t2d_var_len
Size of the string containing the name of a variable.
subroutine set_double_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine set_double_array_t2d_d(INST, VARNAME, VALEUR, DIM1, IERR, BLOCK_INDEX)
integer, parameter increase_nb_var_t2d_error
subroutine get_var_info_t2d_d(I, VAR_LEN, INFO_LEN, VARNAME, VARINFO, IERR)
subroutine get_boolean_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine set_string_t2d_d(INST, VARNAME, VALEUR, VALUELEN, INDEX1, INDEX2, IERR)
character(len=200), dimension(:), allocatable vinfo_t2d
List of variable info.
subroutine get_string_t2d_d(INST, VARNAME, VALEUR, VALUELEN, INDEX1, INDEX2, IERR)
integer, parameter index_block_missing
integer, parameter no_position
subroutine get_double_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine get_var_type_t2d_d(VARNAME, VARTYPE, READONLY, NDIM, IENT, JENT, KENT, GETPOS, SETPOS, IERR)
character(len=40), dimension(:), allocatable vname_t2d
List of variable names.
subroutine set_integer_array_t2d_d(INST, VARNAME, VALEUR, DIM1, IERR)
subroutine get_integer_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
integer, parameter unknown_var_error
subroutine get_double_array_t2d_d(INST, VARNAME, VALEUR, DIM1, IERR, BLOCK_INDEX)
character(len=error_mess_len) err_mess
Error message.
integer, parameter run_timestep_pos
subroutine set_boolean_t2d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine get_integer_array_t2d_d(INST, VARNAME, VALEUR, DIM1, IERR)
integer, parameter t2d_info_len
Size of the string containing the information about a variable.