The TELEMAC-MASCARET system  trunk
api_handle_var_t3d.f
Go to the documentation of this file.
1 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 !
5  MODULE api_handle_var_t3d
6 
9  IMPLICIT NONE
11  INTEGER, PARAMETER :: t3d_var_len=40
13  INTEGER, PARAMETER :: t3d_type_len=12
15  INTEGER, PARAMETER :: t3d_info_len=200
17  INTEGER, PARAMETER :: nb_var_t3d=108
19  CHARACTER(LEN=T3D_VAR_LEN),ALLOCATABLE :: vname_t3d(:)
21  CHARACTER(LEN=T3D_INFO_LEN),ALLOCATABLE :: vinfo_t3d(:)
22 !
23  CONTAINS
24 !
25  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28  SUBROUTINE get_double_array_t3d_d
29  & (inst, varname, valeur, dim1, ierr, block_index)
30 !
31  TYPE(instance_t3d), INTENT(IN) :: INST
32  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
33  INTEGER, INTENT(IN) :: DIM1
34  DOUBLE PRECISION, INTENT(OUT):: VALEUR(dim1)
35  INTEGER, INTENT(OUT):: IERR
36  INTEGER, OPTIONAL, INTENT(IN) :: BLOCK_INDEX
37 !
38  ierr = 0
39 !
40  IF(trim(varname).EQ.'MODEL.HBOR') THEN
41  valeur(1:inst%HBOR%DIM1) = inst%HBOR%R(1:inst%HBOR%DIM1)
42  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
43  valeur(1:inst%UBOR2D%DIM1) = inst%UBOR2D%R(1:inst%UBOR2D%DIM1)
44  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
45  valeur(1:inst%VBOR2D%DIM1) = inst%VBOR2D%R(1:inst%VBOR2D%DIM1)
46  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
47  valeur(1:inst%UBORF%DIM1) = inst%UBORF%R(1:inst%UBORF%DIM1)
48  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
49  valeur(1:inst%VBORF%DIM1) = inst%VBORF%R(1:inst%VBORF%DIM1)
50  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
51  valeur(1:inst%WBORF%DIM1) = inst%WBORF%R(1:inst%WBORF%DIM1)
52  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
53  valeur(1:inst%UBORL%DIM1) = inst%UBORL%R(1:inst%UBORL%DIM1)
54  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
55  valeur(1:inst%VBORL%DIM1) = inst%VBORL%R(1:inst%VBORL%DIM1)
56  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
57  valeur(1:inst%WBORL%DIM1) = inst%WBORL%R(1:inst%WBORL%DIM1)
58  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
59  valeur(1:inst%UBORS%DIM1) = inst%UBORS%R(1:inst%UBORS%DIM1)
60  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
61  valeur(1:inst%VBORS%DIM1) = inst%VBORS%R(1:inst%VBORS%DIM1)
62  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
63  valeur(1:inst%WBORS%DIM1) = inst%WBORS%R(1:inst%WBORS%DIM1)
64  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
65  valeur(1:inst%MESH2D%XNEBOR%DIM1) =
66  & inst%MESH2D%XNEBOR%R(1:inst%MESH2D%XNEBOR%DIM1)
67  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
68  valeur(1:inst%MESH2D%YNEBOR%DIM1) =
69  & inst%MESH2D%YNEBOR%R(1:inst%MESH2D%YNEBOR%DIM1)
70  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
71  valeur(1:inst%H%DIM1) = inst%H%R(1:inst%H%DIM1)
72  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
73  valeur(1:inst%DH%DIM1) = inst%DH%R(1:inst%DH%DIM1)
74  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
75  IF(PRESENT(block_index))THEN
76  valeur(1:inst%TA%ADR(block_index)%P%DIM1) =
77  & inst%TA%ADR(block_index)%P%R(1:inst%TA%ADR(block_index)%P%DIM1)
78  ELSE
79  ierr = index_block_missing
80  err_mess = 'THE BOCK NUMBER IS MISSING FOR'//trim(varname)
81  END IF
82  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
83  valeur(1:inst%WINDX%DIM1) = inst%WINDX%R(1:inst%WINDX%DIM1)
84  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
85  valeur(1:inst%WINDY%DIM1) = inst%WINDY%R(1:inst%WINDY%DIM1)
86  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
87  valeur(1:inst%U%DIM1) = inst%U%R(1:inst%U%DIM1)
88  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
89  valeur(1:inst%V%DIM1) = inst%V%R(1:inst%V%DIM1)
90  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
91  valeur(1:inst%W%DIM1) = inst%W%R(1:inst%W%DIM1)
92  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
93  valeur(1:inst%AK%DIM1) = inst%AK%R(1:inst%AK%DIM1)
94  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
95  valeur(1:inst%AKN%DIM1) = inst%AKN%R(1:inst%AKN%DIM1)
96  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
97  valeur(1:inst%EP%DIM1) = inst%EP%R(1:inst%EP%DIM1)
98  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
99  valeur(1:inst%EPN%DIM1) = inst%EPN%R(1:inst%EPN%DIM1)
100  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
101  valeur(1:inst%RUGOF%DIM1) = inst%RUGOF%R(1:inst%RUGOF%DIM1)
102  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
103  valeur(1:inst%TAIR%DIM1) = inst%TAIR%R(1:inst%TAIR%DIM1)
104  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
105  valeur(1:inst%MESH3D%X%DIM1) =
106  & inst%MESH3D%X%R(1:inst%MESH3D%X%DIM1)
107  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
108  valeur(1:inst%MESH3D%Y%DIM1) =
109  & inst%MESH3D%Y%R(1:inst%MESH3D%Y%DIM1)
110  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
111  valeur(1:SIZE(inst%FLUX_BOUNDARIES)) =
112  & inst%FLUX_BOUNDARIES(1:SIZE(inst%FLUX_BOUNDARIES))
113  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
114  valeur(1:SIZE(inst%COTIMP)) = inst%COTIMP(1:SIZE(inst%COTIMP))
115  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
116  valeur(1:SIZE(inst%VITIMP)) = inst%VITIMP(1:SIZE(inst%VITIMP))
117  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
118  valeur(1:SIZE(inst%DEBIMP)) = inst%DEBIMP(1:SIZE(inst%DEBIMP))
119  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
120  valeur(1:SIZE(inst%QSCE)) = inst%QSCE(1:SIZE(inst%QSCE))
121  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
122  valeur(1:SIZE(inst%USCE)) = inst%USCE(1:SIZE(inst%USCE))
123  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
124  valeur(1:SIZE(inst%VSCE)) = inst%VSCE(1:SIZE(inst%VSCE))
125  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
126  valeur(1:SIZE(inst%WSCE)) = inst%WSCE(1:SIZE(inst%WSCE))
127  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
128  valeur(1:SIZE(inst%XSCE)) = inst%XSCE(1:SIZE(inst%XSCE))
129  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
130  valeur(1:SIZE(inst%YSCE)) = inst%YSCE(1:SIZE(inst%YSCE))
131  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
132  valeur(1:SIZE(inst%ZSCE)) = inst%ZSCE(1:SIZE(inst%ZSCE))
133  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
134  valeur(1:SIZE(inst%BETAC)) = inst%BETAC(1:SIZE(inst%BETAC))
135  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
136  valeur(1:SIZE(inst%T0AC)) = inst%T0AC(1:SIZE(inst%T0AC))
137  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
138  valeur(1:SIZE(inst%TRAC0)) = inst%TRAC0(1:SIZE(inst%TRAC0))
139  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
140  valeur(1:SIZE(inst%TRACER)) = inst%TRACER(1:SIZE(inst%TRACER))
141  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
142  valeur(1:SIZE(inst%E%R)) =
143  & inst%E%R(1:SIZE(inst%E%R))
144  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
145  valeur(1:SIZE(inst%ZF%R)) =
146  & inst%ZF%R(1:SIZE(inst%ZF%R))
147  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
148  valeur(1:SIZE(inst%Q%R)) =
149  & inst%Q%R(1:SIZE(inst%Q%R))
150  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
151  valeur(1:SIZE(inst%DCLA)) =
152  & inst%DCLA(1:SIZE(inst%DCLA))
153  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
154  valeur(1:SIZE(inst%AC)) =
155  & inst%AC(1:SIZE(inst%AC))
156  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
157  valeur(1:SIZE(inst%XWC)) =
158  & inst%XWC(1:SIZE(inst%XWC))
159  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
160  IF(PRESENT(block_index))THEN
161  valeur(1:SIZE(inst%QBOR%ADR(block_index)%P%R)) =
162  & inst%QBOR%ADR(block_index)%P%R
163  & (1:SIZE(inst%QBOR%ADR(block_index)%P%R))
164  ELSE
165  ierr = index_block_missing
166  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
167  ENDIF
168  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
169  IF(PRESENT(block_index))THEN
170  valeur(1:SIZE(inst%EBOR%ADR(block_index)%P%R)) =
171  & inst%EBOR%ADR(block_index)%P%R
172  & (1:SIZE(inst%EBOR%ADR(block_index)%P%R))
173  ELSE
174  ierr = index_block_missing
175  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
176  ENDIF
177  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
178  valeur(1:SIZE(inst%FLBOR%R)) =
179  & inst%FLBOR%R(1:SIZE(inst%FLBOR%R))
180  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
181  valeur(1:SIZE(inst%TOB%R)) =
182  & inst%TOB%R(1:SIZE(inst%TOB%R))
183  ! <get_double_array>
184  ELSE
185  ierr = unknown_var_error
186  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
187  ENDIF
188 !
189  END SUBROUTINE get_double_array_t3d_d
190 !
191  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194  SUBROUTINE set_double_array_t3d_d
195  & (inst, varname, valeur, dim1, ierr, block_index)
196 !
197  TYPE(instance_t3d), INTENT(INOUT) :: INST
198  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
199  INTEGER, INTENT(IN) :: DIM1
200  DOUBLE PRECISION, INTENT(IN) :: VALEUR(dim1)
201  INTEGER, INTENT(OUT) :: IERR
202  INTEGER, OPTIONAL, INTENT(IN) :: BLOCK_INDEX
203 !
204  ierr = 0
205  IF(trim(varname).EQ.'MODEL.HBOR') THEN
206  inst%HBOR%R(1:inst%HBOR%DIM1) = valeur(1:inst%HBOR%DIM1)
207  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
208  inst%UBOR2D%R(1:inst%UBOR2D%DIM1) = valeur(1:inst%UBOR2D%DIM1)
209  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
210  inst%VBOR2D%R(1:inst%VBOR2D%DIM1) = valeur(1:inst%VBOR2D%DIM1)
211  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
212  inst%UBORF%R(1:inst%UBORF%DIM1) = valeur(1:inst%UBORF%DIM1)
213  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
214  inst%VBORF%R(1:inst%VBORF%DIM1) = valeur(1:inst%VBORF%DIM1)
215  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
216  inst%WBORF%R(1:inst%WBORF%DIM1) = valeur(1:inst%WBORF%DIM1)
217  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
218  inst%UBORL%R(1:inst%UBORL%DIM1) = valeur(1:inst%UBORL%DIM1)
219  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
220  inst%VBORL%R(1:inst%VBORL%DIM1) = valeur(1:inst%VBORL%DIM1)
221  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
222  inst%WBORL%R(1:inst%WBORL%DIM1) = valeur(1:inst%WBORL%DIM1)
223  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
224  inst%UBORS%R(1:inst%UBORS%DIM1) = valeur(1:inst%UBORS%DIM1)
225  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
226  inst%VBORS%R(1:inst%VBORS%DIM1) = valeur(1:inst%VBORS%DIM1)
227  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
228  inst%WBORS%R(1:inst%WBORS%DIM1) = valeur(1:inst%WBORS%DIM1)
229  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
230  inst%H%R(1:inst%H%DIM1) = valeur(1:inst%H%DIM1)
231  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
232  inst%DH%R(1:inst%DH%DIM1) = valeur(1:inst%DH%DIM1)
233  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
234  IF(PRESENT(block_index))THEN
235  inst%TA%ADR(block_index)%P%R(1:inst%TA%ADR(block_index)%P%DIM1)
236  & = valeur(1:inst%TA%ADR(block_index)%P%DIM1)
237  ELSE
238  ierr = index_block_missing
239  err_mess = 'THE BOCK NUMBER IS MISSING FOR'//trim(varname)
240  END IF
241  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
242  inst%U%R(1:inst%U%DIM1) = valeur(1:inst%U%DIM1)
243  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
244  inst%V%R(1:inst%V%DIM1) = valeur(1:inst%V%DIM1)
245  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
246  inst%W%R(1:inst%W%DIM1) = valeur(1:inst%W%DIM1)
247  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
248  inst%AK%R(1:inst%AK%DIM1) = valeur(1:inst%AK%DIM1)
249  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
250  inst%AKN%R(1:inst%AKN%DIM1) = valeur(1:inst%AKN%DIM1)
251  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
252  inst%EP%R(1:inst%EP%DIM1) = valeur(1:inst%EP%DIM1)
253  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
254  inst%EPN%R(1:inst%EPN%DIM1) = valeur(1:inst%EPN%DIM1)
255  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
256  inst%RUGOF%R(1:inst%RUGOF%DIM1) = valeur(1:inst%RUGOF%DIM1)
257  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
258  inst%WINDX%R(1:inst%WINDX%DIM1) = valeur(1:inst%WINDX%DIM1)
259  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
260  inst%WINDY%R(1:inst%WINDY%DIM1) = valeur(1:inst%WINDY%DIM1)
261  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
262  inst%TAIR%R(1:inst%TAIR%DIM1) = valeur(1:inst%TAIR%DIM1)
263  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
264  inst%FLUX_BOUNDARIES(1:SIZE(inst%FLUX_BOUNDARIES)) =
265  & valeur(1:SIZE(inst%FLUX_BOUNDARIES))
266  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
267  inst%COTIMP(1:SIZE(inst%COTIMP)) = valeur(1:SIZE(inst%COTIMP))
268  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
269  inst%DEBIMP(1:SIZE(inst%DEBIMP)) = valeur(1:SIZE(inst%DEBIMP))
270  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
271  inst%QSCE(1:SIZE(inst%QSCE)) = valeur(1:SIZE(inst%QSCE))
272  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
273  inst%USCE(1:SIZE(inst%USCE)) = valeur(1:SIZE(inst%USCE))
274  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
275  inst%VSCE(1:SIZE(inst%VSCE)) = valeur(1:SIZE(inst%VSCE))
276  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
277  inst%WSCE(1:SIZE(inst%WSCE)) = valeur(1:SIZE(inst%WSCE))
278  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
279  inst%XSCE(1:SIZE(inst%XSCE)) = valeur(1:SIZE(inst%XSCE))
280  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
281  inst%YSCE(1:SIZE(inst%YSCE)) = valeur(1:SIZE(inst%YSCE))
282  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
283  inst%ZSCE(1:SIZE(inst%ZSCE)) = valeur(1:SIZE(inst%ZSCE))
284  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
285  inst%BETAC(1:SIZE(inst%BETAC)) = valeur(1:SIZE(inst%BETAC))
286  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
287  inst%T0AC(1:SIZE(inst%T0AC)) = valeur(1:SIZE(inst%T0AC))
288  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
289  inst%TRAC0(1:SIZE(inst%TRAC0)) = valeur(1:SIZE(inst%TRAC0))
290  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
291  inst%TRACER(1:SIZE(inst%TRACER)) =valeur(1:SIZE(inst%TRACER))
292  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
293  inst%VITIMP(1:SIZE(inst%VITIMP)) = valeur(1:SIZE(inst%VITIMP))
294  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
295  inst%E%R(1:SIZE(inst%E%R)) =
296  & valeur(1:SIZE(inst%E%R))
297  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
298  inst%ZF%R(1:SIZE(inst%ZF%R)) =
299  & valeur(1:SIZE(inst%ZF%R))
300  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
301  inst%Q%R(1:SIZE(inst%Q%R)) =
302  & valeur(1:SIZE(inst%Q%R))
303  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
304  inst%DCLA(1:SIZE(inst%DCLA)) =
305  & valeur(1:SIZE(inst%DCLA))
306  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
307  inst%AC(1:SIZE(inst%AC)) =
308  & valeur(1:SIZE(inst%AC))
309  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
310  inst%XWC(1:SIZE(inst%XWC)) =
311  & valeur(1:SIZE(inst%XWC))
312  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
313  IF(PRESENT(block_index))THEN
314  inst%QBOR%ADR(block_index)%P%R
315  & (1:SIZE(inst%QBOR%ADR(block_index)%P%R))=
316  & valeur(1:SIZE(inst%QBOR%ADR(block_index)%P%R))
317  ELSE
318  ierr = index_block_missing
319  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
320  ENDIF
321  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
322  IF(PRESENT(block_index))THEN
323  inst%EBOR%ADR(block_index)%P%R
324  & (1:SIZE(inst%EBOR%ADR(block_index)%P%R))=
325  & valeur(1:SIZE(inst%EBOR%ADR(block_index)%P%R))
326  ELSE
327  ierr = index_block_missing
328  err_mess = 'THE BLOCK INDEX IS MISSING FOR'//trim(varname)
329  ENDIF
330  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
331  inst%FLBOR%R(1:SIZE(inst%FLBOR%R)) =
332  & valeur(1:SIZE(inst%FLBOR%R))
333  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
334  inst%TOB%R(1:SIZE(inst%TOB%R)) =
335  & valeur(1:SIZE(inst%TOB%R))
336  ! <set_double_array>
337  ELSE
338  ierr = unknown_var_error
339  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
340  ENDIF
341 !
342  END SUBROUTINE set_double_array_t3d_d
343 !
344  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
347  SUBROUTINE get_integer_array_t3d_d
348  & (inst, varname, valeur, dim1, ierr)
349 !
350  TYPE(instance_t3d), INTENT(IN) :: INST
351  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
352  INTEGER, INTENT(IN) :: DIM1
353  INTEGER, INTENT(OUT) :: VALEUR(dim1)
354  INTEGER, INTENT(OUT) :: IERR
355 !
356  ierr = 0
357  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
358  valeur(1:inst%LIHBOR%DIM1) = inst%LIHBOR%I(1:inst%LIHBOR%DIM1)
359  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
360  valeur(1:inst%LIUBOF%DIM1) = inst%LIUBOF%I(1:inst%LIUBOF%DIM1)
361  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
362  valeur(1:inst%LIVBOF%DIM1) = inst%LIVBOF%I(1:inst%LIVBOF%DIM1)
363  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
364  valeur(1:inst%LIWBOF%DIM1) = inst%LIWBOF%I(1:inst%LIWBOF%DIM1)
365  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
366  valeur(1:inst%LIUBOL%DIM1) = inst%LIUBOL%I(1:inst%LIUBOL%DIM1)
367  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
368  valeur(1:inst%LIVBOL%DIM1) = inst%LIVBOL%I(1:inst%LIVBOL%DIM1)
369  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
370  valeur(1:inst%LIWBOL%DIM1) = inst%LIWBOL%I(1:inst%LIWBOL%DIM1)
371  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
372  valeur(1:inst%LIUBOS%DIM1) = inst%LIUBOS%I(1:inst%LIUBOS%DIM1)
373  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
374  valeur(1:inst%LIVBOS%DIM1) = inst%LIVBOS%I(1:inst%LIVBOS%DIM1)
375  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
376  valeur(1:inst%LIWBOS%DIM1) = inst%LIWBOS%I(1:inst%LIWBOS%DIM1)
377  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
378  valeur(1:inst%MESH2D%KP1BOR%DIM1) =
379  & inst%MESH2D%KP1BOR%I(1:inst%MESH2D%KP1BOR%DIM1)
380  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
381  valeur(1:inst%NUMLIQ%DIM1) = inst%NUMLIQ%I(1:inst%NUMLIQ%DIM1)
382  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
383  valeur(1:inst%MESH3D%NBOR%DIM1) =
384  & inst%MESH3D%NBOR%I(1:inst%MESH3D%NBOR%DIM1)
385  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
386  valeur(1:SIZE(inst%MESH3D%IKLE%I)) =
387  & inst%MESH3D%IKLE%I(1:SIZE(inst%MESH3D%IKLE%I))
388  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
389  valeur(1:SIZE(inst%MESH3D%NACHB%I)) =
390  & inst%MESH3D%NACHB%I(1:SIZE(inst%MESH3D%NACHB%I))
391  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
392  valeur(1:inst%MESH3D%KNOLG%DIM1) =
393  & inst%MESH3D%KNOLG%I(1:inst%MESH3D%KNOLG%DIM1)
394  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
395  valeur(1:SIZE(inst%CLU%I)) =
396  & inst%CLU%I(1:SIZE(inst%CLU%I))
397  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
398  valeur(1:SIZE(inst%CLV%I)) =
399  & inst%CLV%I(1:SIZE(inst%CLV%I))
400  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
401  valeur(1:SIZE(inst%LIQBOR%I)) =
402  & inst%LIQBOR%I(1:SIZE(inst%LIQBOR%I))
403  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
404  valeur(1:SIZE(inst%LIEBOR%I)) =
405  & inst%LIEBOR%I(1:SIZE(inst%LIEBOR%I))
406  ! <get_integer_array>
407  ELSE
408  ierr = unknown_var_error
409  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
410  ENDIF
411 !
412  END SUBROUTINE get_integer_array_t3d_d
413 !
414  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
416  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
417  SUBROUTINE set_integer_array_t3d_d
418  & (inst, varname, valeur, dim1, ierr)
419 !
420  TYPE(instance_t3d), INTENT(INOUT) :: INST
421  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
422  INTEGER, INTENT(IN) :: DIM1
423  INTEGER, INTENT(IN) :: VALEUR(dim1)
424  INTEGER, INTENT(OUT) :: IERR
425 !
426  ierr = 0
427  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
428  inst%LIHBOR%I(1:inst%LIHBOR%DIM1) = valeur(1:inst%LIHBOR%DIM1)
429  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
430  inst%LIUBOF%I(1:inst%LIUBOF%DIM1) = valeur(1:inst%LIUBOF%DIM1)
431  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
432  inst%LIVBOF%I(1:inst%LIVBOF%DIM1) = valeur(1:inst%LIVBOF%DIM1)
433  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
434  inst%LIWBOF%I(1:inst%LIWBOF%DIM1) = valeur(1:inst%LIWBOF%DIM1)
435  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
436  inst%LIUBOL%I(1:inst%LIUBOL%DIM1) = valeur(1:inst%LIUBOL%DIM1)
437  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
438  inst%LIVBOL%I(1:inst%LIVBOL%DIM1) = valeur(1:inst%LIVBOL%DIM1)
439  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
440  inst%LIWBOL%I(1:inst%LIWBOL%DIM1) = valeur(1:inst%LIWBOL%DIM1)
441  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
442  inst%LIUBOS%I(1:inst%LIUBOS%DIM1) = valeur(1:inst%LIUBOS%DIM1)
443  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
444  inst%LIVBOS%I(1:inst%LIVBOS%DIM1) = valeur(1:inst%LIVBOS%DIM1)
445  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
446  inst%LIWBOS%I(1:inst%LIWBOS%DIM1) = valeur(1:inst%LIWBOS%DIM1)
447  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
448  inst%MESH3D%IKLE%I(1:SIZE(inst%MESH3D%IKLE%I)) =
449  & valeur(1:SIZE(inst%MESH3D%IKLE%I))
450  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
451  inst%MESH3D%NACHB%I(1:SIZE(inst%MESH3D%NACHB%I)) =
452  & valeur(1:SIZE(inst%MESH3D%NACHB%I))
453  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
454  inst%MESH3D%KNOLG%I(1:inst%MESH3D%KNOLG%DIM1) =
455  & valeur(1:inst%MESH3D%KNOLG%DIM1)
456  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
457  inst%BND_TIDE(1:SIZE(inst%BND_TIDE)) =
458  & valeur(1:SIZE(inst%BND_TIDE))
459  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
460  inst%CLU%I(1:SIZE(inst%CLU%I)) =
461  & valeur(1:SIZE(inst%CLU%I))
462  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
463  inst%CLV%I(1:SIZE(inst%CLV%I)) =
464  & valeur(1:SIZE(inst%CLV%I))
465  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
466  inst%LIQBOR%I(1:SIZE(inst%LIQBOR%I)) =
467  & valeur(1:SIZE(inst%LIQBOR%I))
468  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
469  inst%LIEBOR%I(1:SIZE(inst%LIEBOR%I)) =
470  & valeur(1:SIZE(inst%LIEBOR%I))
471  ! <set_integer_array>
472  ELSE
473  ierr = unknown_var_error
474  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
475  ENDIF
476 !
477  END SUBROUTINE set_integer_array_t3d_d
478 !
479  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
481  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
490  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
491  SUBROUTINE get_double_t3d_d
492  & (inst, varname, valeur, index1, index2, index3, ierr)
493 !
494  TYPE(instance_t3d), INTENT(IN) :: INST
495  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
496  DOUBLE PRECISION, INTENT(OUT):: VALEUR
497  INTEGER, INTENT(IN) :: INDEX1
498  INTEGER, INTENT(IN) :: INDEX2
499  INTEGER, INTENT(IN) :: INDEX3
500  INTEGER, INTENT(OUT):: IERR
501 !
502  ierr = 0
503  valeur = 0.0
504 !
505  IF(trim(varname).EQ.'MODEL.HBOR') THEN
506  valeur = inst%HBOR%R(index1)
507  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
508  valeur = inst%UBOR2D%R(index1)
509  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
510  valeur = inst%VBOR2D%R(index1)
511  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
512  valeur = inst%UBORF%R(index1)
513  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
514  valeur = inst%VBORF%R(index1)
515  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
516  valeur = inst%WBORF%R(index1)
517  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
518  valeur = inst%UBORL%R(index1)
519  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
520  valeur = inst%VBORL%R(index1)
521  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
522  valeur = inst%WBORL%R(index1)
523  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
524  valeur = inst%UBORS%R(index1)
525  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
526  valeur = inst%VBORS%R(index1)
527  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
528  valeur = inst%WBORS%R(index1)
529  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
530  valeur = inst%MESH2D%XNEBOR%R(index1)
531  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
532  valeur = inst%MESH2D%YNEBOR%R(index1)
533  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
534  valeur = inst%H%R(index1)
535  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
536  valeur = inst%DH%R(index1)
537  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
538  valeur = inst%TA%ADR(index1)%P%R(index2)
539  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
540  valeur = inst%U%R(index1)
541  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
542  valeur = inst%V%R(index1)
543  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
544  valeur = inst%W%R(index1)
545  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
546  valeur = inst%AK%R(index1)
547  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
548  valeur = inst%AKN%R(index1)
549  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
550  valeur = inst%EP%R(index1)
551  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
552  valeur = inst%EPN%R(index1)
553  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
554  valeur = inst%RUGOF%R(index1)
555  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
556  valeur = inst%WINDX%R(index1)
557  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
558  valeur = inst%WINDY%R(index1)
559  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
560  valeur = inst%TAIR%R(index1)
561  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
562  valeur = inst%MESH3D%X%R(index1)
563  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
564  valeur = inst%MESH3D%Y%R(index1)
565  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
566  valeur = inst%FLUX_BOUNDARIES(index1)
567  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
568  valeur = inst%COTIMP(index1)
569  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
570  valeur = inst%VITIMP(index1)
571  ELSE IF(trim(varname).EQ.'MODEL.AT') THEN
572  valeur = inst%AT
573  ELSE IF(trim(varname).EQ.'WAQTEL.C_ATMOS') THEN
574  valeur = inst%C_ATMOS
575  ELSE IF(trim(varname).EQ.'WAQTEL.CP_EAU') THEN
576  valeur = inst%CP_EAU
577  ELSE IF(trim(varname).EQ.'MODEL.DUREE') THEN
578  valeur = inst%DUREE
579  ELSE IF(trim(varname).EQ.'MODEL.RHO0') THEN
580  valeur = inst%RHO0
581  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
582  valeur = inst%DEBIMP(index1)
583  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
584  valeur = inst%QSCE(index1)
585  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
586  valeur = inst%USCE(index1)
587  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
588  valeur = inst%VSCE(index1)
589  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
590  valeur = inst%WSCE(index1)
591  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
592  valeur = inst%XSCE(index1)
593  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
594  valeur = inst%YSCE(index1)
595  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
596  valeur = inst%ZSCE(index1)
597  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
598  valeur = inst%BETAC(index1)
599  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
600  valeur = inst%TRAC0(index1)
601  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
602  valeur = inst%T0AC(index1)
603  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
604  valeur = inst%TRACER(index1)
605  ELSE IF(trim(varname).EQ.'MODEL.TASCE') THEN
606  valeur = inst%TASCE(index1,index2)
607  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
608  valeur = inst%CTIDE
609  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
610  valeur = inst%CTIDEV
611  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
612  valeur = inst%MSL
613  ELSE IF(trim(varname).EQ.'MODEL.PRANDTL') THEN
614  valeur = inst%PRANDTL
615  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
616  valeur = inst%E%R(index1)
617  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
618  valeur = inst%ZF%R(index1)
619  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
620  valeur = inst%Q%R(index1)
621  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
622  valeur = inst%DCLA(index1)
623  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
624  valeur = inst%AC(index1)
625  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
626  valeur = inst%XWC(index1)
627  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
628  valeur = inst%QBOR%ADR(index1)%P%R(index2)
629  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
630  valeur = inst%EBOR%ADR(index1)%P%R(index2)
631  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
632  valeur = inst%FLBOR%R(index1)
633  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
634  valeur = inst%TOB%R(index1)
635  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
636  valeur = inst%PARTHENIADES(index1,index2)
637  ! <get_double>
638  ELSE
639  ierr = unknown_var_error
640  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
641  ENDIF
642 !
643  END SUBROUTINE get_double_t3d_d
644 !
645  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
647  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
656  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
657  SUBROUTINE set_double_t3d_d
658  & (inst, varname, valeur, index1, index2, index3, ierr)
659 !
660  TYPE(instance_t3d), INTENT(INOUT) :: INST
661  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
662  DOUBLE PRECISION, INTENT(IN) :: VALEUR
663  INTEGER, INTENT(IN) :: INDEX1
664  INTEGER, INTENT(IN) :: INDEX2
665  INTEGER, INTENT(IN) :: INDEX3
666  INTEGER, INTENT(OUT) :: IERR
667 !
668  ierr = 0
669  IF(trim(varname).EQ.'MODEL.HBOR') THEN
670  inst%HBOR%R(index1) = valeur
671  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
672  inst%UBOR2D%R(index1) = valeur
673  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
674  inst%VBOR2D%R(index1) = valeur
675  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
676  inst%UBORF%R(index1) = valeur
677  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
678  inst%VBORF%R(index1) = valeur
679  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
680  inst%WBORF%R(index1) = valeur
681  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
682  inst%UBORL%R(index1) = valeur
683  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
684  inst%VBORL%R(index1) = valeur
685  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
686  inst%WBORL%R(index1) = valeur
687  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
688  inst%UBORS%R(index1) = valeur
689  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
690  inst%VBORS%R(index1) = valeur
691  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
692  inst%WBORS%R(index1) = valeur
693  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
694  inst%H%R(index1) = valeur
695  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
696  inst%DH%R(index1) = valeur
697  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
698  inst%TA%ADR(index1)%P%R(index2) = valeur
699  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
700  inst%U%R(index1) = valeur
701  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
702  inst%V%R(index1) = valeur
703  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
704  inst%W%R(index1) = valeur
705  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
706  inst%AK%R(index1) = valeur
707  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
708  inst%AKN%R(index1) = valeur
709  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
710  inst%EP%R(index1) = valeur
711  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
712  inst%EPN%R(index1) = valeur
713  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
714  inst%RUGOF%R(index1) = valeur
715  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
716  inst%WINDX%R(index1) = valeur
717  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
718  inst%WINDY%R(index1) = valeur
719  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
720  inst%TAIR%R(index1) = valeur
721  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
722  inst%FLUX_BOUNDARIES(index1) = valeur
723  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
724  inst%COTIMP(index1) = valeur
725  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
726  inst%DEBIMP(index1) = valeur
727  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
728  inst%QSCE(index1) = valeur
729  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
730  inst%USCE(index1) = valeur
731  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
732  inst%VSCE(index1) = valeur
733  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
734  inst%WSCE(index1) = valeur
735  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
736  inst%XSCE(index1) = valeur
737  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
738  inst%YSCE(index1) = valeur
739  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
740  inst%ZSCE(index1) = valeur
741  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
742  inst%BETAC(index1) = valeur
743  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
744  inst%TRAC0(index1) = valeur
745  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
746  inst%T0AC(index1) = valeur
747  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
748  inst%TRACER(index1) = valeur
749  ELSE IF(trim(varname).EQ.'MODEL.TASCE') THEN
750  inst%TASCE(index1,index2) = valeur
751  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
752  inst%VITIMP(index1) = valeur
753  ELSE IF(trim(varname).EQ.'MODEL.AT') THEN
754  inst%AT = valeur
755  ELSE IF(trim(varname).EQ.'MODEL.RHO0') THEN
756  inst%RHO0 = valeur
757  ELSE IF(trim(varname).EQ.'WAQTEL.C_ATMOS') THEN
758  inst%C_ATMOS = valeur
759  ELSE IF(trim(varname).EQ.'WAQTEL.CP_EAU') THEN
760  inst%CP_EAU = valeur
761  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
762  inst%CTIDE = valeur
763  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
764  inst%CTIDEV = valeur
765  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
766  inst%MSL = valeur
767  ELSE IF(trim(varname).EQ.'MODEL.PRANDTL') THEN
768  inst%PRANDTL = valeur
769  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
770  inst%E%R(index1) = valeur
771  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
772  inst%ZF%R(index1) = valeur
773  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
774  inst%Q%R(index1) = valeur
775  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
776  inst%DCLA(index1) = valeur
777  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
778  inst%AC(index1) = valeur
779  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
780  inst%XWC(index1) = valeur
781  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
782  inst%QBOR%ADR(index1)%P%R(index2) = valeur
783  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
784  inst%EBOR%ADR(index1)%P%R(index2) = valeur
785  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
786  inst%FLBOR%R(index1) = valeur
787  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
788  inst%TOB%R(index1) = valeur
789  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
790  inst%PARTHENIADES(index1,index2) = valeur
791  ! <set_double>
792  ELSE
793  ierr = unknown_var_error
794  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
795  ENDIF
796 !
797  END SUBROUTINE set_double_t3d_d
798 !
799  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
801  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
810  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
811  SUBROUTINE get_integer_t3d_d
812  & (inst, varname, valeur, index1, index2, index3, ierr)
813 !
814  TYPE(instance_t3d), INTENT(IN) :: INST
815  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
816  INTEGER, INTENT(OUT) :: VALEUR
817  INTEGER, INTENT(IN) :: INDEX1
818  INTEGER, INTENT(IN) :: INDEX2
819  INTEGER, INTENT(IN) :: INDEX3
820  INTEGER, INTENT(OUT) :: IERR
821 !
822  ierr = 0
823  valeur = -1
824  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
825  valeur = inst%LIHBOR%I(index1)
826  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
827  valeur = inst%LIUBOF%I(index1)
828  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
829  valeur = inst%LIVBOF%I(index1)
830  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
831  valeur = inst%LIWBOF%I(index1)
832  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
833  valeur = inst%LIUBOL%I(index1)
834  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
835  valeur = inst%LIVBOL%I(index1)
836  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
837  valeur = inst%LIWBOL%I(index1)
838  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
839  valeur = inst%LIUBOS%I(index1)
840  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
841  valeur = inst%LIVBOS%I(index1)
842  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
843  valeur = inst%LIWBOS%I(index1)
844  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
845  valeur = inst%MESH2D%KP1BOR%I(index1)
846  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
847  valeur = inst%NUMLIQ%I(index1)
848  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
849  valeur = inst%MESH3D%NBOR%I(index1)
850  ELSE IF(trim(varname).EQ.'MODEL.NPOIN') THEN
851  valeur = inst%MESH3D%NPOIN
852  ELSE IF(trim(varname).EQ.'MODEL.NPOIN2') THEN
853  valeur = inst%MESH2D%NPOIN
854  ELSE IF(trim(varname).EQ.'MODEL.NPLAN') THEN
855  valeur = inst%NPLAN
856  ELSE IF(trim(varname).EQ.'MODEL.NTRAC') THEN
857  valeur = inst%NTRAC
858  ELSE IF(trim(varname).EQ.'MODEL.MAXTRA') THEN
859  valeur = inst%MAXTRA
860  ELSE IF(trim(varname).EQ.'MODEL.MAXSCE') THEN
861  valeur = inst%MAXSCE
862  ELSE IF(trim(varname).EQ.'MODEL.NELEM') THEN
863  valeur = inst%MESH3D%NELEM
864  ELSE IF(trim(varname).EQ.'MODEL.NPTFR') THEN
865  valeur = inst%MESH3D%NPTFR
866  ELSE IF(trim(varname).EQ.'MODEL.NPTFR2') THEN
867  valeur = inst%MESH2D%NPTFR
868  ELSE IF(trim(varname).EQ.'MODEL.BND_COLOR') THEN
869  valeur = inst%BOUNDARY_COLOUR%I(index1)
870  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
871  valeur = inst%NIT
872  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
873  valeur = inst%LT
874  ELSE IF(trim(varname).EQ.'MODEL.NELMAX') THEN
875  valeur = inst%MESH3D%NELMAX
876  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
877  valeur = inst%MESH3D%IKLE%I((index2-1)*inst%MESH3D%IKLE%DIM1
878  & + index1)
879  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
880  valeur = inst%MESH3D%NACHB%I((index2-1)*inst%NBMAXNSHARE
881  & + index1)
882  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
883  valeur = inst%MESH3D%KNOLG%I(index1)
884  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
885  valeur = inst%CLU%I(index1)
886  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
887  valeur = inst%CLV%I(index1)
888  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
889  valeur = inst%LIQBOR%I(index1)
890  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
891  valeur = inst%LIEBOR%I(index1)
892  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
893  valeur = inst%NSICLA
894  ! <get_integer>
895  ELSE
896  ierr = unknown_var_error
897  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
898  ENDIF
899 !
900  END SUBROUTINE get_integer_t3d_d
901 !
902  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
904  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
913  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
914  SUBROUTINE set_integer_t3d_d
915  & (inst, varname, valeur, index1, index2, index3, ierr)
916 !
917  TYPE(instance_t3d), INTENT(INOUT) :: INST
918  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
919  INTEGER, INTENT(IN) :: VALEUR
920  INTEGER, INTENT(IN) :: INDEX1
921  INTEGER, INTENT(IN) :: INDEX2
922  INTEGER, INTENT(IN) :: INDEX3
923  INTEGER, INTENT(OUT) :: IERR
924 !
925  ierr = 0
926  IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
927  inst%LIHBOR%I(index1) = valeur
928  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
929  inst%LIUBOF%I(index1) = valeur
930  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
931  inst%LIVBOF%I(index1) = valeur
932  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
933  inst%LIWBOF%I(index1) = valeur
934  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
935  inst%LIUBOL%I(index1) = valeur
936  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
937  inst%LIVBOL%I(index1) = valeur
938  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
939  inst%LIWBOL%I(index1) = valeur
940  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
941  inst%LIUBOS%I(index1) = valeur
942  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
943  inst%LIVBOS%I(index1) = valeur
944  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
945  inst%LIWBOS%I(index1) = valeur
946  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
947  inst%NIT = valeur
948  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
949  inst%LT = valeur
950  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
951  inst%BND_TIDE(index1)=valeur
952  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
953  inst%CLU%I(index1) = valeur
954  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
955  inst%CLV%I(index1) = valeur
956  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
957  inst%LIQBOR%I(index1) = valeur
958  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
959  inst%LIEBOR%I(index1) = valeur
960  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
961  inst%NSICLA = valeur
962  ! <set_integer>
963  ELSE
964  ierr = unknown_var_error
965  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
966  ENDIF
967 !
968  END SUBROUTINE set_integer_t3d_d
969 !
970  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
972  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
981  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
982  SUBROUTINE get_string_t3d_d
983  & (inst, varname, valeur, valuelen, index1, index2, ierr)
984 !
985  TYPE(instance_t3d), INTENT(IN) :: INST
986  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
987  INTEGER, INTENT(IN) :: VALUELEN
988  INTEGER, INTENT(IN) :: INDEX1
989  INTEGER, INTENT(IN) :: INDEX2
990  CHARACTER, INTENT(OUT) :: VALEUR(valuelen)
991  INTEGER, INTENT(OUT) :: IERR
992 !
993  INTEGER I,J
994 !
995  ierr = 0
996  valeur = ""
997  IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
998  i = inst%T3DRES
999  DO j = 1,valuelen
1000  valeur(j:j) = inst%T3D_FILES(i)%NAME(j:j)
1001  ENDDO
1002  ELSE IF(trim(varname).EQ.'MODEL.RESULT2D') THEN
1003  i = inst%T3DHYD
1004  DO j = 1,valuelen
1005  valeur(j:j) = inst%T3D_FILES(i)%NAME(j:j)
1006  ENDDO
1007  ELSE IF(trim(varname).EQ.'MODEL.BCFILE') THEN
1008  i = inst%T3DCLI
1009  DO j = 1,valuelen
1010  valeur(j:j) = inst%T3D_FILES(i)%NAME(j:j)
1011  ENDDO
1012  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
1013  i = inst%T3DGEO
1014  DO j = 1,valuelen
1015  valeur(j:j) = inst%T3D_FILES(i)%NAME(j:j)
1016  ENDDO
1017  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
1018  DO j = 1,valuelen
1019  valeur(j:j) = inst%EQUA(j:j)
1020  ENDDO
1021  ! <get_string>
1022  ELSE
1023  ierr = unknown_var_error
1024  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1025  ENDIF
1026 !
1027  END SUBROUTINE get_string_t3d_d
1028 !
1029  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1031  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1040  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1041  SUBROUTINE set_string_t3d_d
1042  & (inst, varname, valeur, valuelen, index1, index2, ierr)
1043 !
1044  TYPE(instance_t3d), INTENT(INOUT) :: INST
1045  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
1046  INTEGER, INTENT(IN) :: VALUELEN
1047  INTEGER, INTENT(IN) :: INDEX1
1048  INTEGER, INTENT(IN) :: INDEX2
1049  CHARACTER, INTENT(IN) :: VALEUR(valuelen)
1050  INTEGER, INTENT(OUT) :: IERR
1051 !
1052  INTEGER I,J
1053 !
1054  ierr = 0
1055  IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
1056  i = inst%T3DRES
1057  DO j=1,valuelen
1058  inst%T3D_FILES(i)%NAME(j:j) = valeur(j)
1059  ENDDO
1060  ELSE IF(trim(varname).EQ.'MODEL.RESULT2D') THEN
1061  i = inst%T3DHYD
1062  DO j=1,valuelen
1063  inst%T3D_FILES(i)%NAME(j:j) = valeur(j)
1064  ENDDO
1065  ! <set_string>
1066  ELSE
1067  ierr = unknown_var_error
1068  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1069  ENDIF
1070 !
1071  END SUBROUTINE set_string_t3d_d
1072 !
1073  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1075  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1084  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1085  SUBROUTINE get_boolean_t3d_d
1086  & (inst, varname, valeur, index1, index2, index3, ierr)
1087 !
1088  TYPE(instance_t3d), INTENT(IN) :: INST
1089  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
1090  INTEGER, INTENT(OUT) :: VALEUR
1091  INTEGER, INTENT(IN) :: INDEX1
1092  INTEGER, INTENT(IN) :: INDEX2
1093  INTEGER, INTENT(IN) :: INDEX3
1094  INTEGER, INTENT(OUT) :: IERR
1095 !
1096  ierr = 0
1097  valeur = 0
1098  IF(trim(varname).EQ.'MODEL.DEBUG') THEN
1099  valeur = inst%DEBUG
1100  ! <get_boolean>
1101  ELSE
1102  ierr = unknown_var_error
1103  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1104  ENDIF
1105 !
1106  END SUBROUTINE get_boolean_t3d_d
1107 !
1108  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1110  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1119  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1120  SUBROUTINE set_boolean_t3d_d
1121  & (inst, varname, valeur, index1, index2, index3, ierr)
1122 !
1123  TYPE(instance_t3d), INTENT(INOUT) :: INST
1124  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
1125  INTEGER, INTENT(IN) :: VALEUR
1126  INTEGER, INTENT(IN) :: INDEX1
1127  INTEGER, INTENT(IN) :: INDEX2
1128  INTEGER, INTENT(IN) :: INDEX3
1129  INTEGER, INTENT(OUT) :: IERR
1130 !
1131  ierr = 0
1132  IF(trim(varname).EQ.'MODEL.DEBUG') THEN
1133  inst%DEBUG = valeur
1134  ! <set_boolean>
1135  ELSE
1136  ierr = unknown_var_error
1137  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
1138  ENDIF
1139 !
1140  END SUBROUTINE set_boolean_t3d_d
1141 !
1142  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1144  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1152  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1153  SUBROUTINE get_var_size_t3d_d
1154  & (inst, varname, dim1, dim2, dim3, ierr)
1155 !
1156  TYPE(instance_t3d), INTENT(IN) :: INST
1157  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
1158  INTEGER, INTENT(OUT) :: DIM1
1159  INTEGER, INTENT(OUT) :: DIM2
1160  INTEGER, INTENT(OUT) :: DIM3
1161  INTEGER, INTENT(OUT) :: IERR
1162 !
1163  INTEGER :: TWODIM(2)
1164  ierr = 0
1165  dim1 = 0
1166  dim2 = 0
1167  dim3 = 0
1168 !
1169  IF(trim(varname).EQ.'MODEL.HBOR') THEN
1170  dim1 = inst%HBOR%DIM1
1171  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
1172  dim1 = inst%UBOR2D%DIM1
1173  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
1174  dim1 = inst%VBOR2D%DIM1
1175  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
1176  dim1 = inst%UBORF%DIM1
1177  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
1178  dim1 = inst%VBORF%DIM1
1179  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
1180  dim1 = inst%WBORF%DIM1
1181  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
1182  dim1 = inst%UBORL%DIM1
1183  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
1184  dim1 = inst%VBORL%DIM1
1185  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
1186  dim1 = inst%WBORL%DIM1
1187  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
1188  dim1 = inst%UBORS%DIM1
1189  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
1190  dim1 = inst%VBORS%DIM1
1191  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
1192  dim1 = inst%WBORS%DIM1
1193  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
1194  dim1 = inst%MESH2D%XNEBOR%DIM1
1195  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
1196  dim1 = inst%MESH2D%YNEBOR%DIM1
1197  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
1198  dim1 = inst%H%DIM1
1199  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
1200  dim1 = inst%DH%DIM1
1201  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
1202  dim1 = inst%TA%N
1203  dim2 = inst%TA%ADR(1)%P%DIM1
1204  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
1205  dim1 = inst%U%DIM1
1206  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
1207  dim1 = inst%V%DIM1
1208  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
1209  dim1 = inst%W%DIM1
1210  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
1211  dim1 = inst%AK%DIM1
1212  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
1213  dim1 = inst%AKN%DIM1
1214  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
1215  dim1 = inst%EP%DIM1
1216  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
1217  dim1 = inst%EPN%DIM1
1218  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
1219  dim1 = inst%RUGOF%DIM1
1220  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
1221  dim1 = inst%WINDX%DIM1
1222  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
1223  dim1 = inst%WINDY%DIM1
1224  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
1225  dim1 = inst%TAIR%DIM1
1226  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
1227  dim1 = inst%MESH2D%KP1BOR%DIM1
1228  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
1229  dim1 = inst%MESH3D%X%DIM1
1230  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
1231  dim1 = inst%MESH3D%Y%DIM1
1232  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
1233  dim1 = inst%MESH3D%NBOR%DIM1
1234  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
1235  dim1 = inst%NUMLIQ%DIM1
1236  ELSE IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
1237  dim1 = inst%LIHBOR%DIM1
1238  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
1239  dim1 = inst%LIUBOF%DIM1
1240  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
1241  dim1 = inst%LIVBOF%DIM1
1242  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
1243  dim1 = inst%LIWBOF%DIM1
1244  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
1245  dim1 = inst%LIUBOL%DIM1
1246  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
1247  dim1 = inst%LIVBOL%DIM1
1248  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
1249  dim1 = inst%LIWBOL%DIM1
1250  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
1251  dim1 = inst%LIUBOS%DIM1
1252  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
1253  dim1 = inst%LIVBOS%DIM1
1254  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
1255  dim1 = inst%LIWBOS%DIM1
1256  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
1257  dim1 = SIZE(inst%COTIMP)
1258  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
1259  dim1 = SIZE(inst%DEBIMP)
1260  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
1261  dim1 = SIZE(inst%QSCE)
1262  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
1263  dim1 = SIZE(inst%USCE)
1264  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
1265  dim1 = SIZE(inst%VSCE)
1266  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
1267  dim1 = SIZE(inst%WSCE)
1268  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
1269  dim1 = SIZE(inst%XSCE)
1270  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
1271  dim1 = SIZE(inst%YSCE)
1272  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
1273  dim1 = SIZE(inst%ZSCE)
1274  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
1275  dim1 = SIZE(inst%BETAC)
1276  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
1277  dim1 = SIZE(inst%TRAC0)
1278  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
1279  dim1 = SIZE(inst%T0AC)
1280  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
1281  dim1 = SIZE(inst%TRACER)
1282  ELSE IF(trim(varname).EQ.'MODEL.TASCE') THEN
1283  dim1 = inst%MAXSCE
1284  dim2 = inst%MAXTRA
1285  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
1286  dim1 = SIZE(inst%VITIMP)
1287  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
1288  dim1 = SIZE(inst%FLUX_BOUNDARIES)
1289  ELSE IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
1290  dim1 = 250
1291  ELSE IF(trim(varname).EQ.'MODEL.RESULT2D') THEN
1292  dim1 = 250
1293  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
1294  dim1 = 20
1295  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
1296  dim1 = 250
1297  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE')THEN
1298  dim1 = SIZE(inst%BND_TIDE)
1299  ELSE IF(trim(varname).EQ.'MODEL.IKLE')THEN
1300  dim1 = inst%MESH3D%IKLE%DIM2
1301  dim2 = inst%MESH3D%IKLE%DIM1
1302  ELSE IF(trim(varname).EQ.'MODEL.NACHB')THEN
1303  dim1 = inst%NPTIR
1304  dim2 = inst%NBMAXNSHARE
1305  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
1306  dim1 = inst%MESH3D%KNOLG%DIM1
1307  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
1308  dim1 = inst%E%DIM1
1309  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
1310  dim1 = inst%ZF%DIM1
1311  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
1312  dim1 = inst%Q%DIM1
1313  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
1314  dim1 = SIZE(inst%DCLA)
1315  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
1316  dim1 = SIZE(inst%AC)
1317  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
1318  dim1 = SIZE(inst%XWC)
1319  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
1320  dim1 = inst%QBOR%N
1321  dim2 = inst%QBOR%ADR(1)%P%DIM1
1322  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
1323  dim1 = inst%EBOR%N
1324  dim2 = inst%EBOR%ADR(1)%P%DIM1
1325  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
1326  dim1 = inst%FLBOR%DIM1
1327  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
1328  dim1 = inst%TOB%DIM1
1329  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
1330  dim1 = inst%CLU%DIM1
1331  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
1332  dim1 = inst%CLV%DIM1
1333  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
1334  dim1 = inst%LIQBOR%DIM1
1335  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
1336  dim1 = inst%LIEBOR%DIM1
1337  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
1338  twodim = shape(inst%PARTHENIADES)
1339  dim1 = twodim(1)
1340  dim2 = twodim(2)
1341  ! <get_var_size>
1342  ENDIF
1343 !
1344  END SUBROUTINE get_var_size_t3d_d
1345 !
1346  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1348  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1351  ! BOOLEAN, STRING)
1363  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1364  SUBROUTINE get_var_type_t3d_d
1365  & (varname, vartype, readonly, ndim,ient,jent,kent,
1366  & getpos,setpos,ierr)
1367 !
1368  CHARACTER(LEN=T3D_VAR_LEN), INTENT(IN) :: VARNAME
1369  CHARACTER(LEN=T3D_TYPE_LEN), INTENT(OUT) :: VARTYPE
1370  LOGICAL, INTENT(OUT) :: READONLY
1371  INTEGER, INTENT(OUT) :: NDIM
1372  INTEGER, INTENT(OUT) :: IERR
1373  INTEGER, INTENT(OUT) :: IENT
1374  INTEGER, INTENT(OUT) :: JENT
1375  INTEGER, INTENT(OUT) :: KENT
1376  INTEGER, INTENT(OUT) :: GETPOS
1377  INTEGER, INTENT(OUT) :: SETPOS
1378 !
1379  ierr = 0
1380  vartype = ''
1381  readonly = .true.
1382  ndim = 0
1383  ient = 0
1384  jent = 0
1385  kent = 0
1386  getpos = no_position
1387  setpos = no_position
1388 !
1389  IF(trim(varname).EQ.'MODEL.AT') THEN
1390  vartype = 'DOUBLE'
1391  readonly = .false.
1392  ndim = 0
1393  getpos = run_allocation_pos
1394  setpos = run_allocation_pos
1395  ELSE IF(trim(varname).EQ.'MODEL.RHO0') THEN
1396  vartype = 'DOUBLE'
1397  readonly = .false.
1398  ndim = 0
1399  getpos = run_allocation_pos
1400  setpos = run_allocation_pos
1401  ELSE IF(trim(varname).EQ.'WAQTEL.C_ATMOS') THEN
1402  vartype = 'DOUBLE'
1403  readonly = .false.
1404  ndim = 0
1405  getpos = run_allocation_pos
1406  setpos = run_allocation_pos
1407  ELSE IF(trim(varname).EQ.'WAQTEL.CP_EAU') THEN
1408  vartype = 'DOUBLE'
1409  readonly = .false.
1410  ndim = 0
1411  getpos = run_allocation_pos
1412  setpos = run_allocation_pos
1413  ELSE IF(trim(varname).EQ.'MODEL.BCFILE') THEN
1414  vartype = 'STRING'
1415  readonly = .false.
1416  ndim = 0
1417  getpos = run_read_case_pos
1418  setpos = run_read_case_pos
1419  ELSE IF(trim(varname).EQ.'MODEL.GRAPH_PERIOD') THEN
1420  vartype = 'INTEGER'
1421  readonly = .false.
1422  ndim = 0
1423  getpos = run_read_case_pos
1424  setpos = run_read_case_pos
1425  ELSE IF(trim(varname).EQ.'MODEL.LISTIN_PERIOD') THEN
1426  vartype = 'INTEGER'
1427  readonly = .false.
1428  ndim = 0
1429  getpos = run_read_case_pos
1430  setpos = run_read_case_pos
1431  ELSE IF(trim(varname).EQ.'MODEL.DEBUG') THEN
1432  vartype = 'INTEGER'
1433  readonly = .false.
1434  ndim = 0
1435  getpos = run_set_config_pos
1436  setpos = run_set_config_pos
1437  ELSE IF(trim(varname).EQ.'MODEL.BND_TIDE') THEN
1438  vartype = 'INTEGER'
1439  readonly = .false.
1440  ndim = 1
1441  getpos = run_allocation_pos
1442  setpos = run_allocation_pos
1443  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
1444  vartype = 'DOUBLE'
1445  readonly = .false.
1446  ndim = 1
1447  getpos = run_timestep_pos
1448  setpos = run_allocation_pos
1449  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
1450  vartype = 'DOUBLE'
1451  readonly = .false.
1452  ndim = 1
1453  getpos = run_timestep_pos
1454  setpos = run_allocation_pos
1455  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
1456  vartype = 'DOUBLE'
1457  readonly = .false.
1458  ndim = 1
1459  getpos = run_timestep_pos
1460  setpos = run_allocation_pos
1461  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
1462  vartype = 'DOUBLE'
1463  readonly = .false.
1464  ndim = 1
1465  getpos = run_timestep_pos
1466  setpos = run_allocation_pos
1467  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
1468  vartype = 'DOUBLE'
1469  readonly = .false.
1470  ndim = 1
1471  getpos = run_timestep_pos
1472  setpos = run_allocation_pos
1473  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
1474  vartype = 'DOUBLE'
1475  readonly = .false.
1476  ndim = 1
1477  getpos = run_timestep_pos
1478  setpos = run_allocation_pos
1479  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
1480  vartype = 'DOUBLE'
1481  readonly = .false.
1482  ndim = 1
1483  getpos = run_timestep_pos
1484  setpos = run_allocation_pos
1485  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
1486  vartype = 'DOUBLE'
1487  readonly = .false.
1488  ndim = 1
1489  getpos = run_timestep_pos
1490  setpos = run_allocation_pos
1491  ELSE IF(trim(varname).EQ.'MODEL.BETAC') THEN
1492  vartype = 'DOUBLE'
1493  readonly = .false.
1494  ndim = 1
1495  getpos = run_timestep_pos
1496  setpos = run_allocation_pos
1497  ELSE IF(trim(varname).EQ.'MODEL.TRAC0') THEN
1498  vartype = 'DOUBLE'
1499  readonly = .false.
1500  ndim = 1
1501  getpos = run_timestep_pos
1502  setpos = run_allocation_pos
1503  ELSE IF(trim(varname).EQ.'MODEL.T0AC') THEN
1504  vartype = 'DOUBLE'
1505  readonly = .false.
1506  ndim = 1
1507  getpos = run_timestep_pos
1508  setpos = run_allocation_pos
1509  ELSE IF(trim(varname).EQ.'MODEL.TRACER') THEN
1510  vartype = 'DOUBLE'
1511  readonly = .false.
1512  ndim = 1
1513  getpos = run_timestep_pos
1514  setpos = run_allocation_pos
1515  ELSE IF(trim(varname).EQ.'MODEL.TASCE') THEN
1516  vartype = 'DOUBLE'
1517  readonly = .false.
1518  ndim = 2
1519  getpos = run_timestep_pos
1520  setpos = run_allocation_pos
1521  ELSE IF(trim(varname).EQ.'MODEL.HBOR') THEN
1522  vartype = 'DOUBLE'
1523  readonly = .false.
1524  ndim = 1
1525  ient = 1
1526  getpos = run_allocation_pos
1527  setpos = run_allocation_pos
1528  ELSE IF(trim(varname).EQ.'MODEL.KP1BOR') THEN
1529  vartype = 'INTEGER'
1530  readonly = .false.
1531  ndim = 1
1532  ient = 1
1533  getpos = run_allocation_pos
1534  setpos = run_allocation_pos
1535  ELSE IF(trim(varname).EQ.'MODEL.NBOR') THEN
1536  vartype = 'INTEGER'
1537  readonly = .false.
1538  ndim = 1
1539  ient = 1
1540  getpos = run_allocation_pos
1541  setpos = run_allocation_pos
1542  ELSE IF(trim(varname).EQ.'MODEL.UBOR2D') THEN
1543  vartype = 'DOUBLE'
1544  readonly = .false.
1545  ndim = 1
1546  ient = 1
1547  getpos = run_allocation_pos
1548  setpos = run_allocation_pos
1549  ELSE IF(trim(varname).EQ.'MODEL.VBOR2D') THEN
1550  vartype = 'DOUBLE'
1551  readonly = .false.
1552  ndim = 1
1553  ient = 1
1554  getpos = run_allocation_pos
1555  setpos = run_allocation_pos
1556  ELSE IF(trim(varname).EQ.'MODEL.UBORF') THEN
1557  vartype = 'DOUBLE'
1558  readonly = .false.
1559  ndim = 1
1560  ient = 1
1561  getpos = run_allocation_pos
1562  setpos = run_allocation_pos
1563  ELSE IF(trim(varname).EQ.'MODEL.VBORF') THEN
1564  vartype = 'DOUBLE'
1565  readonly = .false.
1566  ndim = 1
1567  ient = 1
1568  getpos = run_allocation_pos
1569  setpos = run_allocation_pos
1570  ELSE IF(trim(varname).EQ.'MODEL.WBORF') THEN
1571  vartype = 'DOUBLE'
1572  readonly = .false.
1573  ndim = 1
1574  ient = 1
1575  getpos = run_allocation_pos
1576  setpos = run_allocation_pos
1577  ELSE IF(trim(varname).EQ.'MODEL.UBORL') THEN
1578  vartype = 'DOUBLE'
1579  readonly = .false.
1580  ndim = 1
1581  ient = 1
1582  getpos = run_allocation_pos
1583  setpos = run_allocation_pos
1584  ELSE IF(trim(varname).EQ.'MODEL.VBORL') THEN
1585  vartype = 'DOUBLE'
1586  readonly = .false.
1587  ndim = 1
1588  ient = 1
1589  getpos = run_allocation_pos
1590  setpos = run_allocation_pos
1591  ELSE IF(trim(varname).EQ.'MODEL.WBORL') THEN
1592  vartype = 'DOUBLE'
1593  readonly = .false.
1594  ndim = 1
1595  ient = 1
1596  getpos = run_allocation_pos
1597  setpos = run_allocation_pos
1598  ELSE IF(trim(varname).EQ.'MODEL.UBORS') THEN
1599  vartype = 'DOUBLE'
1600  readonly = .false.
1601  ndim = 1
1602  ient = 1
1603  getpos = run_allocation_pos
1604  setpos = run_allocation_pos
1605  ELSE IF(trim(varname).EQ.'MODEL.VBORS') THEN
1606  vartype = 'DOUBLE'
1607  readonly = .false.
1608  ndim = 1
1609  ient = 1
1610  getpos = run_allocation_pos
1611  setpos = run_allocation_pos
1612  ELSE IF(trim(varname).EQ.'MODEL.WBORS') THEN
1613  vartype = 'DOUBLE'
1614  readonly = .false.
1615  ndim = 1
1616  ient = 1
1617  getpos = run_allocation_pos
1618  setpos = run_allocation_pos
1619  ELSE IF(trim(varname).EQ.'MODEL.LIHBOR') THEN
1620  vartype = 'INTEGER'
1621  readonly = .false.
1622  ndim = 1
1623  getpos = run_allocation_pos
1624  setpos = run_allocation_pos
1625  ELSE IF(trim(varname).EQ.'MODEL.NUMLIQ') THEN
1626  vartype = 'INTEGER'
1627  readonly = .false.
1628  ndim = 1
1629  getpos = run_allocation_pos
1630  setpos = run_allocation_pos
1631  ELSE IF(trim(varname).EQ.'MODEL.LIUBOF') THEN
1632  vartype = 'INTEGER'
1633  readonly = .false.
1634  ndim = 1
1635  getpos = run_allocation_pos
1636  setpos = run_allocation_pos
1637  ELSE IF(trim(varname).EQ.'MODEL.LIVBOF') THEN
1638  vartype = 'INTEGER'
1639  readonly = .false.
1640  ndim = 1
1641  getpos = run_allocation_pos
1642  setpos = run_allocation_pos
1643  ELSE IF(trim(varname).EQ.'MODEL.LIWBOF') THEN
1644  vartype = 'INTEGER'
1645  readonly = .false.
1646  ndim = 1
1647  getpos = run_allocation_pos
1648  setpos = run_allocation_pos
1649  ELSE IF(trim(varname).EQ.'MODEL.LIUBOL') THEN
1650  vartype = 'INTEGER'
1651  readonly = .false.
1652  ndim = 1
1653  getpos = run_allocation_pos
1654  setpos = run_allocation_pos
1655  ELSE IF(trim(varname).EQ.'MODEL.LIVBOL') THEN
1656  vartype = 'INTEGER'
1657  readonly = .false.
1658  ndim = 1
1659  getpos = run_allocation_pos
1660  setpos = run_allocation_pos
1661  ELSE IF(trim(varname).EQ.'MODEL.LIWBOL') THEN
1662  vartype = 'INTEGER'
1663  readonly = .false.
1664  ndim = 1
1665  getpos = run_allocation_pos
1666  setpos = run_allocation_pos
1667  ELSE IF(trim(varname).EQ.'MODEL.LIUBOS') THEN
1668  vartype = 'INTEGER'
1669  readonly = .false.
1670  ndim = 1
1671  getpos = run_allocation_pos
1672  setpos = run_allocation_pos
1673  ELSE IF(trim(varname).EQ.'MODEL.LIVBOS') THEN
1674  vartype = 'INTEGER'
1675  readonly = .false.
1676  ndim = 1
1677  getpos = run_allocation_pos
1678  setpos = run_allocation_pos
1679  ELSE IF(trim(varname).EQ.'MODEL.LIWBOS') THEN
1680  vartype = 'INTEGER'
1681  readonly = .false.
1682  ndim = 1
1683  getpos = run_allocation_pos
1684  setpos = run_allocation_pos
1685  ELSE IF(trim(varname).EQ.'MODEL.IKLE') THEN
1686  vartype = 'INTEGER'
1687  readonly = .true.
1688  ndim = 2
1689  getpos = run_allocation_pos
1690  setpos = run_allocation_pos
1691  ELSE IF(trim(varname).EQ.'MODEL.NACHB') THEN
1692  vartype = 'INTEGER'
1693  readonly = .true.
1694  ndim = 2
1695  getpos = run_allocation_pos
1696  setpos = run_allocation_pos
1697  ELSE IF(trim(varname).EQ.'MODEL.KNOLG') THEN
1698  vartype = 'INTEGER'
1699  readonly = .true.
1700  ndim = 1
1701  getpos = run_allocation_pos
1702  setpos = run_allocation_pos
1703  ELSE IF(trim(varname).EQ.'MODEL.TA') THEN
1704  vartype = 'DOUBLE_BLOCK'
1705  readonly = .false.
1706  ndim = 2
1707  getpos = run_allocation_pos
1708  setpos = run_allocation_pos
1709  ELSE IF(trim(varname).EQ.'MODEL.XNEBOR') THEN
1710  vartype = 'DOUBLE'
1711  readonly = .false.
1712  ndim = 1
1713  ient = 1
1714  getpos = run_allocation_pos
1715  setpos = run_allocation_pos
1716  ELSE IF(trim(varname).EQ.'MODEL.YNEBOR') THEN
1717  vartype = 'DOUBLE'
1718  readonly = .false.
1719  ndim = 1
1720  ient = 1
1721  getpos = run_allocation_pos
1722  setpos = run_allocation_pos
1723  ELSE IF(trim(varname).EQ.'MODEL.WATERDEPTH') THEN
1724  vartype = 'DOUBLE'
1725  readonly = .false.
1726  ndim = 1
1727  ient = 1
1728  getpos = run_timestep_pos
1729  setpos = run_allocation_pos
1730  ELSE IF(trim(varname).EQ.'MODEL.INCWATERDEPTH') THEN
1731  vartype = 'DOUBLE'
1732  readonly = .false.
1733  ndim = 1
1734  ient = 1
1735  getpos = run_timestep_pos
1736  setpos = run_allocation_pos
1737  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYU') THEN
1738  vartype = 'DOUBLE'
1739  readonly = .false.
1740  ndim = 1
1741  ient = 1
1742  getpos = run_timestep_pos
1743  setpos = run_allocation_pos
1744  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYV') THEN
1745  vartype = 'DOUBLE'
1746  readonly = .false.
1747  ndim = 1
1748  ient = 1
1749  getpos = run_timestep_pos
1750  setpos = run_allocation_pos
1751  ELSE IF(trim(varname).EQ.'MODEL.VELOCITYW') THEN
1752  vartype = 'DOUBLE'
1753  readonly = .false.
1754  ndim = 1
1755  ient = 1
1756  getpos = run_timestep_pos
1757  setpos = run_allocation_pos
1758  ELSE IF(trim(varname).EQ.'MODEL.AK') THEN
1759  vartype = 'DOUBLE'
1760  readonly = .false.
1761  ndim = 1
1762  ient = 1
1763  getpos = run_timestep_pos
1764  setpos = run_allocation_pos
1765  ELSE IF(trim(varname).EQ.'MODEL.AKN') THEN
1766  vartype = 'DOUBLE'
1767  readonly = .false.
1768  ndim = 1
1769  ient = 1
1770  getpos = run_timestep_pos
1771  setpos = run_allocation_pos
1772  ELSE IF(trim(varname).EQ.'MODEL.EP') THEN
1773  vartype = 'DOUBLE'
1774  readonly = .false.
1775  ndim = 1
1776  ient = 1
1777  getpos = run_timestep_pos
1778  setpos = run_allocation_pos
1779  ELSE IF(trim(varname).EQ.'MODEL.EPN') THEN
1780  vartype = 'DOUBLE'
1781  readonly = .false.
1782  ndim = 1
1783  ient = 1
1784  getpos = run_timestep_pos
1785  setpos = run_allocation_pos
1786  ELSE IF(trim(varname).EQ.'MODEL.RUGOF') THEN
1787  vartype = 'DOUBLE'
1788  readonly = .false.
1789  ndim = 1
1790  ient = 1
1791  getpos = run_allocation_pos
1792  setpos = run_allocation_pos
1793  ELSE IF(trim(varname).EQ.'MODEL.WINDX') THEN
1794  vartype = 'DOUBLE'
1795  readonly = .false.
1796  ndim = 1
1797  ient = 1
1798  getpos = run_allocation_pos
1799  setpos = run_allocation_pos
1800  ELSE IF(trim(varname).EQ.'MODEL.WINDY') THEN
1801  vartype = 'DOUBLE'
1802  readonly = .false.
1803  ndim = 1
1804  ient = 1
1805  getpos = run_allocation_pos
1806  setpos = run_allocation_pos
1807  ELSE IF(trim(varname).EQ.'WAQTEL.TAIR') THEN
1808  vartype = 'DOUBLE'
1809  readonly = .false.
1810  ndim = 1
1811  ient = 1
1812  getpos = run_allocation_pos
1813  setpos = run_allocation_pos
1814  ELSE IF(trim(varname).EQ.'MODEL.X') THEN
1815  vartype = 'DOUBLE'
1816  readonly = .false.
1817  ndim = 1
1818  ient = 1
1819  getpos = run_allocation_pos
1820  setpos = run_allocation_pos
1821  ELSE IF(trim(varname).EQ.'MODEL.Y') THEN
1822  vartype = 'DOUBLE'
1823  readonly = .false.
1824  ndim = 1
1825  ient = 1
1826  getpos = run_allocation_pos
1827  setpos = run_allocation_pos
1828  ELSE IF(trim(varname).EQ.'MODEL.FLUX_BOUNDARIES') THEN
1829  vartype = 'DOUBLE'
1830  readonly = .false.
1831  ndim = 1
1832  ient = 1
1833  getpos = run_timestep_pos
1834  setpos = run_allocation_pos
1835  ELSE IF(trim(varname).EQ.'MODEL.COTIMP') THEN
1836  vartype = 'DOUBLE'
1837  readonly = .false.
1838  ndim = 1
1839  getpos = run_timestep_pos
1840  setpos = run_allocation_pos
1841  ELSE IF(trim(varname).EQ.'MODEL.DEBIMP') THEN
1842  vartype = 'DOUBLE'
1843  readonly = .false.
1844  ndim = 1
1845  getpos = run_timestep_pos
1846  setpos = run_allocation_pos
1847  ELSE IF(trim(varname).EQ.'MODEL.QSCE') THEN
1848  vartype = 'DOUBLE'
1849  readonly = .false.
1850  ndim = 1
1851  getpos = run_timestep_pos
1852  setpos = run_allocation_pos
1853  ELSE IF(trim(varname).EQ.'MODEL.USCE') THEN
1854  vartype = 'DOUBLE'
1855  readonly = .false.
1856  ndim = 1
1857  getpos = run_timestep_pos
1858  setpos = run_allocation_pos
1859  ELSE IF(trim(varname).EQ.'MODEL.VSCE') THEN
1860  vartype = 'DOUBLE'
1861  readonly = .false.
1862  ndim = 1
1863  getpos = run_timestep_pos
1864  setpos = run_allocation_pos
1865  ELSE IF(trim(varname).EQ.'MODEL.WSCE') THEN
1866  vartype = 'DOUBLE'
1867  readonly = .false.
1868  ndim = 1
1869  getpos = run_timestep_pos
1870  setpos = run_allocation_pos
1871  ELSE IF(trim(varname).EQ.'MODEL.XSCE') THEN
1872  vartype = 'DOUBLE'
1873  readonly = .false.
1874  ndim = 1
1875  getpos = run_timestep_pos
1876  setpos = run_allocation_pos
1877  ELSE IF(trim(varname).EQ.'MODEL.YSCE') THEN
1878  vartype = 'DOUBLE'
1879  readonly = .false.
1880  ndim = 1
1881  getpos = run_timestep_pos
1882  setpos = run_allocation_pos
1883  ELSE IF(trim(varname).EQ.'MODEL.ZSCE') THEN
1884  vartype = 'DOUBLE'
1885  readonly = .false.
1886  ndim = 1
1887  getpos = run_timestep_pos
1888  setpos = run_allocation_pos
1889  ELSE IF(trim(varname).EQ.'MODEL.TASCE') THEN
1890  vartype = 'DOUBLE'
1891  readonly = .false.
1892  ndim = 2
1893  getpos = run_timestep_pos
1894  setpos = run_allocation_pos
1895  ELSE IF(trim(varname).EQ.'MODEL.VITIMP') THEN
1896  vartype = 'DOUBLE'
1897  readonly = .false.
1898  ndim = 1
1899  getpos = run_timestep_pos
1900  setpos = run_allocation_pos
1901  ELSE IF(trim(varname).EQ.'MODEL.RESULTFILE') THEN
1902  vartype = 'STRING'
1903  readonly = .false.
1904  ndim = 1
1905  getpos = run_allocation_pos
1906  setpos = run_allocation_pos
1907  ELSE IF(trim(varname).EQ.'MODEL.RESULT2D') THEN
1908  vartype = 'STRING'
1909  readonly = .false.
1910  ndim = 1
1911  getpos = run_allocation_pos
1912  setpos = run_allocation_pos
1913  ELSE IF(trim(varname).EQ.'MODEL.GEOMETRYFILE') THEN
1914  vartype = 'STRING'
1915  readonly = .false.
1916  ndim = 1
1917  getpos = run_allocation_pos
1918  setpos = run_allocation_pos
1919  ELSE IF(trim(varname).EQ.'MODEL.NPOIN') THEN
1920  vartype = 'INTEGER'
1921  readonly = .false.
1922  getpos = run_allocation_pos
1923  setpos = run_allocation_pos
1924  ELSE IF(trim(varname).EQ.'MODEL.NPOIN2') THEN
1925  vartype = 'INTEGER'
1926  readonly = .false.
1927  getpos = run_allocation_pos
1928  setpos = run_allocation_pos
1929  ELSE IF(trim(varname).EQ.'MODEL.NPLAN') THEN
1930  vartype = 'INTEGER'
1931  readonly = .false.
1932  getpos = run_allocation_pos
1933  setpos = run_allocation_pos
1934  ELSE IF(trim(varname).EQ.'MODEL.NTRAC') THEN
1935  vartype = 'INTEGER'
1936  readonly = .false.
1937  getpos = run_allocation_pos
1938  setpos = run_allocation_pos
1939  ELSE IF(trim(varname).EQ.'MODEL.MAXTRA') THEN
1940  vartype = 'INTEGER'
1941  readonly = .false.
1942  getpos = run_allocation_pos
1943  setpos = run_allocation_pos
1944  ELSE IF(trim(varname).EQ.'MODEL.MAXSCE') THEN
1945  vartype = 'INTEGER'
1946  readonly = .false.
1947  getpos = run_allocation_pos
1948  setpos = run_allocation_pos
1949  ELSE IF(trim(varname).EQ.'MODEL.NELEM') THEN
1950  vartype = 'INTEGER'
1951  readonly = .false.
1952  getpos = run_allocation_pos
1953  setpos = run_allocation_pos
1954  ELSE IF(trim(varname).EQ.'MODEL.NELMAX') THEN
1955  vartype = 'INTEGER'
1956  readonly = .false.
1957  getpos = run_allocation_pos
1958  setpos = run_allocation_pos
1959  ELSE IF(trim(varname).EQ.'MODEL.NPTFR') THEN
1960  vartype = 'INTEGER'
1961  readonly = .false.
1962  getpos = run_allocation_pos
1963  setpos = run_allocation_pos
1964  ELSE IF(trim(varname).EQ.'MODEL.NPTFR2') THEN
1965  vartype = 'INTEGER'
1966  readonly = .false.
1967  getpos = run_allocation_pos
1968  setpos = run_allocation_pos
1969  ELSE IF(trim(varname).EQ.'MODEL.BND_COLOR') THEN
1970  vartype = 'INTEGER'
1971  readonly = .false.
1972  getpos = run_allocation_pos
1973  setpos = run_allocation_pos
1974  ELSE IF(trim(varname).EQ.'MODEL.TIDALRANGE') THEN
1975  vartype = 'DOUBLE'
1976  readonly = .false.
1977  ndim = 0
1978  getpos = run_allocation_pos
1979  setpos = run_allocation_pos
1980  ELSE IF(trim(varname).EQ.'MODEL.TIDALVELOCITY') THEN
1981  vartype = 'DOUBLE'
1982  readonly = .false.
1983  ndim = 0
1984  getpos = run_allocation_pos
1985  setpos = run_allocation_pos
1986  ELSE IF(trim(varname).EQ.'MODEL.SEALEVEL') THEN
1987  vartype = 'DOUBLE'
1988  readonly = .false.
1989  ndim = 0
1990  getpos = run_allocation_pos
1991  setpos = run_allocation_pos
1992  ELSE IF(trim(varname).EQ.'MODEL.PRANDTL') THEN
1993  vartype = 'DOUBLE'
1994  readonly = .false.
1995  ndim = 0
1996  getpos = run_allocation_pos
1997  setpos = run_allocation_pos
1998  ELSE IF(trim(varname).EQ.'MODEL.NTIMESTEPS') THEN
1999  vartype = 'INTEGER'
2000  readonly = .false.
2001  ndim = 0
2002  getpos = run_read_case_pos
2003  setpos = run_read_case_pos
2004  ELSE IF(trim(varname).EQ.'MODEL.LT') THEN
2005  vartype = 'INTEGER'
2006  readonly = .false.
2007  ndim = 0
2008  getpos = run_read_case_pos
2009  setpos = run_read_case_pos
2010  ELSE IF(trim(varname).EQ.'MODEL.EQUATION') THEN
2011  vartype = 'STRING'
2012  readonly = .true.
2013  ndim = 1
2014  getpos = run_read_case_pos
2015  setpos = run_read_case_pos
2016  ELSE IF(trim(varname).EQ.'MODEL.EVOLUTION') THEN
2017  vartype = 'DOUBLE'
2018  readonly = .false.
2019  ndim = 1
2020  getpos = no_position
2021  setpos = no_position
2022  ELSE IF(trim(varname).EQ.'MODEL.BOTTOMELEVATION') THEN
2023  vartype = 'DOUBLE'
2024  readonly = .false.
2025  ndim = 1
2026  getpos = no_position
2027  setpos = no_position
2028  ELSE IF(trim(varname).EQ.'MODEL.FLOWRATEQ') THEN
2029  vartype = 'DOUBLE'
2030  readonly = .false.
2031  ndim = 1
2032  getpos = no_position
2033  setpos = no_position
2034  ELSE IF(trim(varname).EQ.'MODEL.DCLA') THEN
2035  vartype = 'DOUBLE'
2036  readonly = .false.
2037  ndim = 1
2038  getpos = no_position
2039  setpos = no_position
2040  ELSE IF(trim(varname).EQ.'MODEL.SHIELDS') THEN
2041  vartype = 'DOUBLE'
2042  readonly = .false.
2043  ndim = 1
2044  getpos = no_position
2045  setpos = no_position
2046  ELSE IF(trim(varname).EQ.'MODEL.XWC') THEN
2047  vartype = 'DOUBLE'
2048  readonly = .false.
2049  ndim = 1
2050  getpos = no_position
2051  setpos = no_position
2052  ELSE IF(trim(varname).EQ.'MODEL.QBOR') THEN
2053  vartype = ''
2054  readonly = .false.
2055  ndim = 1
2056  getpos = no_position
2057  setpos = no_position
2058  ELSE IF(trim(varname).EQ.'MODEL.EBOR') THEN
2059  vartype = ''
2060  readonly = .false.
2061  ndim = 1
2062  getpos = no_position
2063  setpos = no_position
2064  ELSE IF(trim(varname).EQ.'MODEL.FLBOR') THEN
2065  vartype = 'DOUBLE'
2066  readonly = .false.
2067  ndim = 1
2068  getpos = no_position
2069  setpos = no_position
2070  ELSE IF(trim(varname).EQ.'MODEL.TOB') THEN
2071  vartype = 'DOUBLE'
2072  readonly = .false.
2073  ndim = 1
2074  getpos = no_position
2075  setpos = no_position
2076  ELSE IF(trim(varname).EQ.'MODEL.CLU') THEN
2077  vartype = 'INTEGER'
2078  readonly = .false.
2079  ndim = 1
2080  getpos = no_position
2081  setpos = no_position
2082  ELSE IF(trim(varname).EQ.'MODEL.CLV') THEN
2083  vartype = 'INTEGER'
2084  readonly = .false.
2085  ndim = 1
2086  getpos = no_position
2087  setpos = no_position
2088  ELSE IF(trim(varname).EQ.'MODEL.LIQBOR') THEN
2089  vartype = 'INTEGER'
2090  readonly = .false.
2091  ndim = 1
2092  getpos = no_position
2093  setpos = no_position
2094  ELSE IF(trim(varname).EQ.'MODEL.LIEBOR') THEN
2095  vartype = 'INTEGER'
2096  readonly = .false.
2097  ndim = 1
2098  getpos = no_position
2099  setpos = no_position
2100  ELSE IF(trim(varname).EQ.'MODEL.NSICLA') THEN
2101  vartype = 'INTEGER'
2102  readonly = .false.
2103  ndim = 0
2104  getpos = no_position
2105  setpos = no_position
2106  ELSE IF(trim(varname).EQ.'MODEL.CONCENTRATION') THEN
2107  vartype = ''
2108  readonly = .false.
2109  ndim = 1
2110  getpos = no_position
2111  setpos = no_position
2112  ELSE IF(trim(varname).EQ.'MODEL.PARTHENIADES') THEN
2113  vartype = 'DOUBLE'
2114  readonly = .false.
2115  ndim = 2
2116  getpos = no_position
2117  setpos = no_position
2118  ! <get_var_type>
2119  ELSE
2120  ierr = unknown_var_error
2121  err_mess = 'UNKNOWN VARIABLE NAME : '//trim(varname)
2122  ENDIF
2123 !
2124  END SUBROUTINE get_var_type_t3d_d
2125 !
2126  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2128  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2136  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2137  SUBROUTINE get_var_info_t3d_d(I, VAR_LEN, INFO_LEN,
2138  & VARNAME, VARINFO, IERR)
2139 !
2140  INTEGER, INTENT(IN) :: I
2141  INTEGER, INTENT(IN) :: VAR_LEN
2142  INTEGER, INTENT(IN) :: INFO_LEN
2143  CHARACTER, INTENT(OUT) :: VARNAME(var_len)
2144  CHARACTER, INTENT(OUT) :: VARINFO(info_len)
2145  INTEGER, INTENT(OUT) :: IERR
2146 !
2147  INTEGER :: J
2148 !
2149  ierr = 0
2150 
2151  DO j=1,t3d_var_len
2152  varname(j:j) = vname_t3d(i)(j:j)
2153  ENDDO
2154  DO j=1,t3d_info_len
2155  varinfo(j:j) = vinfo_t3d(i)(j:j)
2156  ENDDO
2157 
2158  RETURN
2159  END SUBROUTINE get_var_info_t3d_d
2160 !
2161  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2163  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2166  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2167  SUBROUTINE set_var_list_t3d_d(IERR)
2168 !
2169  INTEGER, INTENT(OUT) :: IERR
2170 !
2171  INTEGER :: I
2172 !
2173  i=0
2174  ierr = 0
2175  IF(.NOT.ALLOCATED(vname_t3d)) THEN
2176  ALLOCATE(vname_t3d(nb_var_t3d),stat=ierr)
2177  IF(ierr.NE.0) RETURN
2178  ALLOCATE(vinfo_t3d(nb_var_t3d),stat=ierr)
2179  IF(ierr.NE.0) RETURN
2180 !
2181  i = i + 1
2182  vname_t3d(i) = 'MODEL.AT'
2183  vinfo_t3d(i) = 'CURRENT TIME'
2184  i = i + 1
2185  vname_t3d(i) = 'MODEL.RHO0'
2186  vinfo_t3d(i) = 'REFERENCE WATER DENSITY'
2187  i = i + 1
2188  vname_t3d(i) = 'WAQTEL.C_ATMOS'
2189  vinfo_t3d(i) = 'ATMOSPHERE-WATER EXCHANGE MODEL COEFFICIENT'
2190  i = i + 1
2191  vname_t3d(i) = 'WAQTEL.CP_EAU'
2192  vinfo_t3d(i) = ' WATER SPECIFIC HEAT'
2193  i = i + 1
2194  vname_t3d(i) = 'MODEL.BCFILE'
2195  vinfo_t3d(i) = 'BOUNDARY CONFITION FILE NAME'
2196  i = i + 1
2197  vname_t3d(i) = 'MODEL.BND_TIDE'
2198  vinfo_t3d(i) = 'OPTION FOR TIDAL BOUNDARY CONDITIONS'
2199  i = i + 1
2200  vname_t3d(i) = 'MODEL.COTIMP'
2201  vinfo_t3d(i) = 'xxx'
2202  i = i + 1
2203  vname_t3d(i) = 'MODEL.VITIMP'
2204  vinfo_t3d(i) = 'xxx'
2205  i = i + 1
2206  vname_t3d(i) = 'MODEL.DEBIMP'
2207  vinfo_t3d(i) = 'DISCHARGE ON FRONTIER'
2208  i = i + 1
2209  vname_t3d(i) = 'MODEL.QSCE'
2210  vinfo_t3d(i) = 'SOURCE DISCHARGE'
2211  i = i + 1
2212  vname_t3d(i) = 'MODEL.USCE'
2213  vinfo_t3d(i) = 'SOURCE VELOCITY ALONG X AXIS'
2214  i = i + 1
2215  vname_t3d(i) = 'MODEL.VSCE'
2216  vinfo_t3d(i) = 'SOURCE VELOCITY ALONG Y AXIS'
2217  i = i + 1
2218  vname_t3d(i) = 'MODEL.WSCE'
2219  vinfo_t3d(i) = 'SOURCE VELOCITY ALONG Z AXIS'
2220  i = i + 1
2221  vname_t3d(i) = 'MODEL.XSCE'
2222  vinfo_t3d(i) = 'COORDINATE X OF SOURCE'
2223  i = i + 1
2224  vname_t3d(i) = 'MODEL.YSCE'
2225  vinfo_t3d(i) = 'COORDINATE Y OF SOURCE'
2226  i = i + 1
2227  vname_t3d(i) = 'MODEL.ZSCE'
2228  vinfo_t3d(i) = 'SOURCE ELEVATION'
2229  i = i + 1
2230  vname_t3d(i) = 'MODEL.BETAC'
2231  vinfo_t3d(i) = 'BETA EXPANSION COEFFICIENT FOR TRACERS'
2232  i = i + 1
2233  vname_t3d(i) = 'MODEL.TRAC0'
2234  vinfo_t3d(i) = 'INITIAL VALUES OF TRACERS'
2235  i = i + 1
2236  vname_t3d(i) = 'MODEL.T0AC'
2237  vinfo_t3d(i) = 'REFERENCE CONCENTRATION OF TRACERS'
2238  i = i + 1
2239  vname_t3d(i) = 'MODEL.TRACER'
2240  vinfo_t3d(i) = 'VALUES OF TRACERS AT LIQUID BOUNDARIES'
2241  i = i + 1
2242  vname_t3d(i) = 'MODEL.TASCE'
2243  vinfo_t3d(i) = 'TRACER SOURCE VALUE'
2244  i = i + 1
2245  vname_t3d(i) = 'MODEL.DEBUG'
2246  vinfo_t3d(i) = 'ACTIVATING DEBUG MODE'
2247  i = i + 1
2248  vname_t3d(i) = 'MODEL.FLUX_BOUNDARIES'
2249  vinfo_t3d(i) = 'FLUX AT BOUNDARIES'
2250  i = i + 1
2251  vname_t3d(i) = 'MODEL.GEOMETRYFILE'
2252  vinfo_t3d(i) = 'NAME OF THE GEOMERY FILE'
2253  i = i + 1
2254  vname_t3d(i) = 'MODEL.GRAPH_PERIOD'
2255  vinfo_t3d(i) = 'GRAPHICAL OUTPUT PERIOD'
2256  i = i + 1
2257  vname_t3d(i) = 'MODEL.HBOR'
2258  vinfo_t3d(i) = 'BOUNDARY VALUE ON H FOR EACH BOUNDARY POINT'
2259  i = i + 1
2260  vname_t3d(i) = 'MODEL.IKLE'
2261  vinfo_t3d(i) = 'CONNECTIVITY TABLE BETWEEN ELEMENT AND NODES'
2262  i = i + 1
2263  vname_t3d(i) = 'MODEL.NACHB'
2264  vinfo_t3d(i) = 'NUMBERS OF PROC CONTAINING A GIVEN POINT'
2265  i = i + 1
2266  vname_t3d(i) = 'MODEL.KNOLG'
2267  vinfo_t3d(i) =
2268  & 'GIVES THE INITIAL GLOBAL NUMBER OF A LOCAL POINT'
2269  i = i + 1
2270  vname_t3d(i) = 'MODEL.INCWATERDEPTH'
2271  vinfo_t3d(i) = 'INCREASE IN THE THE DEPTH OF THE WATER'
2272  i = i + 1
2273  vname_t3d(i) = 'MODEL.KP1BOR'
2274  vinfo_t3d(i) =
2275  & 'POINTS FOLLOWING AND PRECEDING A BOUNDARY POINT'
2276  i = i + 1
2277  vname_t3d(i) = 'MODEL.LIHBOR'
2278  vinfo_t3d(i) = 'BOUNDARY TYPE ON H FOR EACH BOUNDARY POINT'
2279  i = i + 1
2280  vname_t3d(i) = 'MODEL.LISTIN_PERIOD'
2281  vinfo_t3d(i) = 'LISTING OUTPUT PERIOD'
2282  i = i + 1
2283  vname_t3d(i) = 'MODEL.LIUBOF'
2284  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR U ON THE BOT'
2285  i = i + 1
2286  vname_t3d(i) = 'MODEL.LIVBOF'
2287  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR V ON THE BOT'
2288  i = i + 1
2289  vname_t3d(i) = 'MODEL.LIWBOF'
2290  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR W ON THE BOT'
2291  i = i + 1
2292  vname_t3d(i) = 'MODEL.LIUBOL'
2293  vinfo_t3d(i) = 'TYPE OF BOUNDARY COND FOR U ON THE LAT BOUND'
2294  i = i + 1
2295  vname_t3d(i) = 'MODEL.LIVBOL'
2296  vinfo_t3d(i) = 'TYPE OF BOUNDARY COND FOR V ON THE LAT BOUND'
2297  i = i + 1
2298  vname_t3d(i) = 'MODEL.LIWBOL'
2299  vinfo_t3d(i) = 'TYPE OF BOUNDARY COND FOR W ON THE LAT BOUND'
2300  i = i + 1
2301  vname_t3d(i) = 'MODEL.LIUBOS'
2302  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR U AT THE FS'
2303  i = i + 1
2304  vname_t3d(i) = 'MODEL.LIVBOS'
2305  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR V AT THE FS'
2306  i = i + 1
2307  vname_t3d(i) = 'MODEL.LIWBOS'
2308  vinfo_t3d(i) = 'TYPE OF BOUNDARY CONDITIONS FOR W AT THE FS'
2309  i = i + 1
2310  vname_t3d(i) = 'MODEL.LT'
2311  vinfo_t3d(i) = 'CURRENT TIME STEP'
2312  i = i + 1
2313  vname_t3d(i) = 'MODEL.TA'
2314  vinfo_t3d(i) = 'TRACER INFORMATION'
2315  i = i + 1
2316  vname_t3d(i) = 'MODEL.NBOR'
2317  vinfo_t3d(i) = 'GLOBAL NUMBER OF BOUNDARY POINTS'
2318  i = i + 1
2319  vname_t3d(i) = 'MODEL.NELEM'
2320  vinfo_t3d(i) = 'NUMBER OF ELEMENT IN THE MESH'
2321  i = i + 1
2322  vname_t3d(i) = 'MODEL.NELMAX'
2323  vinfo_t3d(i) = 'MAXIMUM NUMBER OF ELEMENTS ENVISAGED'
2324  i = i + 1
2325  vname_t3d(i) = 'MODEL.NPOIN'
2326  vinfo_t3d(i) = 'NUMBER OF POINT IN THE MESH'
2327  i = i + 1
2328  vname_t3d(i) = 'MODEL.NPOIN2'
2329  vinfo_t3d(i) = 'NUMBER OF POINT IN THE 2D MESH'
2330  i = i + 1
2331  vname_t3d(i) = 'MODEL.NPLAN'
2332  vinfo_t3d(i) = 'NUMBER OF PLANE IN THE 3D MESH'
2333  i = i + 1
2334  vname_t3d(i) = 'MODEL.NTRAC'
2335  vinfo_t3d(i) = 'NUMBER OF TRACER'
2336  i = i + 1
2337  vname_t3d(i) = 'MODEL.MAXTRA'
2338  vinfo_t3d(i) = 'NUMBER OF MAXIMUM TRACER'
2339  i = i + 1
2340  vname_t3d(i) = 'MODEL.MAXSCE'
2341  vinfo_t3d(i) = 'NUMBER OF MAXIMUM SOURCE'
2342  i = i + 1
2343  vname_t3d(i) = 'MODEL.NPTFR'
2344  vinfo_t3d(i) = 'NUMBER OF BOUNDARY POINTS'
2345  i = i + 1
2346  vname_t3d(i) = 'MODEL.NPTFR2'
2347  vinfo_t3d(i) = 'NUMBER OF BOUNDARY POINTS IN MESH2D'
2348  i = i + 1
2349  vname_t3d(i) = 'MODEL.BND_COLOR'
2350  vinfo_t3d(i) = 'BOUNDARY_COLOUR INFORMATION'
2351  i = i + 1
2352  vname_t3d(i) = 'MODEL.NTIMESTEPS'
2353  vinfo_t3d(i) = 'NUMBER OF TIME STEPS'
2354  i = i + 1
2355  vname_t3d(i) = 'MODEL.NUMLIQ'
2356  vinfo_t3d(i) = 'LIQUID BOUNDARY NUMBERS'
2357  i = i + 1
2358  vname_t3d(i) = 'MODEL.RESULTFILE'
2359  vinfo_t3d(i) = 'NAME OF THE RESULT FILE'
2360  i = i + 1
2361  vname_t3d(i) = 'MODEL.RESULT2D'
2362  vinfo_t3d(i) = 'NAME OF THE 2D RESULT FILE'
2363  i = i + 1
2364  vname_t3d(i) = 'MODEL.SEALEVEL'
2365  vinfo_t3d(i) = 'COEFFICIENT TO CALIBRATE SEA LEVEL'
2366  i = i + 1
2367  vname_t3d(i) = 'MODEL.PRANDTL'
2368  vinfo_t3d(i) = 'PRANDTL NUMBER'
2369  i = i + 1
2370  vname_t3d(i) = 'MODEL.TIDALRANGE'
2371  vinfo_t3d(i) = 'COEFFICIENT TO CALIBRATE TIDAL RANGE'
2372  i = i + 1
2373  vname_t3d(i) = 'MODEL.UBOR2D'
2374  vinfo_t3d(i) = 'BOUNDARY VALUE ON U FOR EACH BOUNDARY POINT'
2375  i = i + 1
2376  vname_t3d(i) = 'MODEL.VBOR2D'
2377  vinfo_t3d(i) = 'BOUNDARY VALUE ON V FOR EACH BOUNDARY POINT'
2378  i = i + 1
2379  vname_t3d(i) = 'MODEL.UBORF'
2380  vinfo_t3d(i) = 'PRESCRIBED VELOCITY U ON THE BOTTOM'
2381  i = i + 1
2382  vname_t3d(i) = 'MODEL.VBORF'
2383  vinfo_t3d(i) = 'PRESCRIBED VELOCITY V ON THE BOTTOM'
2384  i = i + 1
2385  vname_t3d(i) = 'MODEL.WBORF'
2386  vinfo_t3d(i) = 'PRESCRIBED VELOCITY W ON THE BOTTOM'
2387  i = i + 1
2388  vname_t3d(i) = 'MODEL.UBORL'
2389  vinfo_t3d(i) = 'PRESCRIBED VELOCITY U ON THE LATERAL BOUNDARY'
2390  i = i + 1
2391  vname_t3d(i) = 'MODEL.VBORL'
2392  vinfo_t3d(i) = 'PRESCRIBED VELOCITY V ON THE LATERAL BOUNDARY'
2393  i = i + 1
2394  vname_t3d(i) = 'MODEL.WBORL'
2395  vinfo_t3d(i) = 'PRESCRIBED VELOCITY W ON THE LATERAL BOUNDARY'
2396  i = i + 1
2397  vname_t3d(i) = 'MODEL.UBORS'
2398  vinfo_t3d(i) = 'PRESCRIBED VELOCITY U AT THE FREE SURFACE'
2399  i = i + 1
2400  vname_t3d(i) = 'MODEL.VBORS'
2401  vinfo_t3d(i) = 'PRESCRIBED VELOCITY V AT THE FREE SURFACE'
2402  i = i + 1
2403  vname_t3d(i) = 'MODEL.WBORS'
2404  vinfo_t3d(i) = 'PRESCRIBED VELOCITY W AT THE FREE SURFACE'
2405  i = i + 1
2406  vname_t3d(i) = 'MODEL.VELOCITYU'
2407  vinfo_t3d(i) = 'VELOCITY ON U'
2408  i = i + 1
2409  vname_t3d(i) = 'MODEL.VELOCITYV'
2410  vinfo_t3d(i) = 'VELOCITY ON V'
2411  i = i + 1
2412  vname_t3d(i) = 'MODEL.VELOCITYW'
2413  vinfo_t3d(i) = 'VELOCITY ON W'
2414  i = i + 1
2415  vname_t3d(i) = 'MODEL.AK'
2416  vinfo_t3d(i) = 'TURBULENT PRODUCTION K'
2417  i = i + 1
2418  vname_t3d(i) = 'MODEL.AKN'
2419  vinfo_t3d(i) = 'TURBULENT PRODUCTION K AT TN'
2420  i = i + 1
2421  vname_t3d(i) = 'MODEL.EP'
2422  vinfo_t3d(i) = 'TURBULENT DISSIPIATION EPS'
2423  i = i + 1
2424  vname_t3d(i) = 'MODEL.EPN'
2425  vinfo_t3d(i) = 'TURBULENT DISSIPIATION EPS AT TN'
2426  i = i + 1
2427  vname_t3d(i) = 'MODEL.RUGOF'
2428  vinfo_t3d(i) = 'FRICTION COEFFICIENT'
2429  i = i + 1
2430  vname_t3d(i) = 'MODEL.WINDX'
2431  vinfo_t3d(i) = 'VELOCITY X OF THE WIND'
2432  i = i + 1
2433  vname_t3d(i) = 'MODEL.WINDY'
2434  vinfo_t3d(i) = 'VELOCITY Y OF THE WIND'
2435  i = i + 1
2436  vname_t3d(i) = 'WAQTEL.TAIR'
2437  vinfo_t3d(i) = 'AIR TEMPERATURE'
2438  i = i + 1
2439  vname_t3d(i) = 'MODEL.WATERDEPTH'
2440  vinfo_t3d(i) = 'DEPTH OF THE WATER'
2441  i = i + 1
2442  vname_t3d(i) = 'MODEL.X'
2443  vinfo_t3d(i) = 'X COORDINATES FOR EACH POINT OF THE MESH'
2444  i = i + 1
2445  vname_t3d(i) = 'MODEL.XNEBOR'
2446  vinfo_t3d(i) = 'NORMAL X TO 1D BOUNDARY POINTS'
2447  i = i + 1
2448  vname_t3d(i) = 'MODEL.Y'
2449  vinfo_t3d(i) = 'Y COORDINATES FOR EACH POINT OF THE MESH'
2450  i = i + 1
2451  vname_t3d(i) = 'MODEL.YNEBOR'
2452  vinfo_t3d(i) = 'NORMAL Y TO 1D BOUNDARY POINTS'
2453  i = i + 1
2454  vname_t3d(i) = 'MODEL.EQUATION'
2455  vinfo_t3d(i) = 'NAME OF THE EQUATION USED'
2456  i = i + 1
2457  vname_t3d(i) = 'MODEL.BOTTOMELEVATION'
2458  vinfo_t3d(i) = 'BOTTOM ELEVATION'
2459  i = i + 1
2460  vname_t3d(i) = 'MODEL.QBOR'
2461  vinfo_t3d(i) = 'BOUNDARY VALUE ON Q FOR EACH BOUNDARY POINT'
2462  i = i + 1
2463  vname_t3d(i) = 'MODEL.EBOR'
2464  vinfo_t3d(i) = 'BOUNDARY VALUE ON E FOR EACH BOUNDARY POINT'
2465  i = i + 1
2466  vname_t3d(i) = 'MODEL.FLBOR'
2467  vinfo_t3d(i) = 'BOUNDARY VALUE ON ZF FOR EACH BOUNDARY POINT'
2468  i = i + 1
2469  vname_t3d(i) = 'MODEL.TOB'
2470  vinfo_t3d(i) = 'SHEAR STRESS'
2471  i = i + 1
2472  vname_t3d(i) = 'MODEL.CLU'
2473  vinfo_t3d(i) = 'BOUNDARY TYPE ON U FOR EACH BOUNDARY POINT'
2474  i = i + 1
2475  vname_t3d(i) = 'MODEL.CLV'
2476  vinfo_t3d(i) = 'BOUNDARY TYPE ON V FOR EACH BOUNDARY POINT'
2477  i = i + 1
2478  vname_t3d(i) = 'MODEL.LIQBOR'
2479  vinfo_t3d(i) = 'BOUNDARY TYPE ON Q FOR EACH BOUNDARY POINT'
2480  i = i + 1
2481  vname_t3d(i) = 'MODEL.LIEBOR'
2482  vinfo_t3d(i) = 'BOUNDARY TYPE ON E FOR EACH BOUNDARY POINT'
2483  i = i + 1
2484  vname_t3d(i) = 'MODEL.NSICLA'
2485  vinfo_t3d(i) = 'NUMBER OF SIZE-CLASSES OF BED MATERIAL'
2486  i = i + 1
2487  vname_t3d(i) = 'MODEL.NOMBLAY'
2488  vinfo_t3d(i) = 'NUMBER OF LAYER IN THE BED'
2489  i = i + 1
2490  vname_t3d(i) = 'MODEL.CONCENTRATION'
2491  vinfo_t3d(i) = 'CONCENTRATION AT TIME N'
2492  i = i + 1
2493  vname_t3d(i) = 'MODEL.EVOLUTION'
2494  vinfo_t3d(i) = 'EVOLUTION OF BED'
2495  i = i + 1
2496  vname_t3d(i) = 'MODEL.PARTHENIADES'
2497  vinfo_t3d(i) = 'PARTHENIADES EROSION COEFICIANT FOR EACH '//
2498  & 'BED LAYER FOR EADCH CLASS'
2499  i = i + 1
2500  vname_t3d(i) = 'MODEL.DCLA'
2501  vinfo_t3d(i) = 'MEDIAN GRAIN SIZE'
2502  i = i + 1
2503  vname_t3d(i) = 'MODEL.SHIELDS'
2504  vinfo_t3d(i) = 'CRITICAL SHIELDS PARAMETER'
2505  i = i + 1
2506  vname_t3d(i) = 'MODEL.XWC'
2507  vinfo_t3d(i) = 'SETTLING VELOCITY'
2508  ! <set_var_list>
2509  IF(i.NE.nb_var_t3d) THEN
2511  RETURN
2512  ENDIF
2513  ENDIF
2514 !
2515  END SUBROUTINE set_var_list_t3d_d
2516 !
2517  END MODULE api_handle_var_t3d
subroutine get_boolean_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine get_var_type_t3d_d(VARNAME, VARTYPE, READONLY, NDIM, IENT, JENT, KENT, GETPOS, SETPOS, IERR)
integer, parameter run_set_config_pos
subroutine set_string_t3d_d(INST, VARNAME, VALEUR, VALUELEN, INDEX1, INDEX2, IERR)
integer, parameter t3d_type_len
Size of the string containing the type of a variable.
integer, parameter run_allocation_pos
integer, parameter run_read_case_pos
subroutine get_integer_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
integer, parameter nb_var_t3d
The maximum number of variable.
integer, parameter t3d_var_len
Size of the string containing the name of a variable.
integer, parameter increase_nb_var_t3d_error
subroutine get_var_size_t3d_d(INST, VARNAME, DIM1, DIM2, DIM3, IERR)
integer, parameter t3d_info_len
Size of the string containing the information about a variable.
character(len=t3d_var_len), dimension(:), allocatable vname_t3d
List of variable names.
subroutine set_integer_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine set_double_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine get_string_t3d_d(INST, VARNAME, VALEUR, VALUELEN, INDEX1, INDEX2, IERR)
subroutine set_var_list_t3d_d(IERR)
integer, parameter index_block_missing
subroutine set_integer_array_t3d_d(INST, VARNAME, VALEUR, DIM1, IERR)
integer, parameter no_position
subroutine get_var_info_t3d_d(I, VAR_LEN, INFO_LEN, VARNAME, VARINFO, IERR)
character(len=t3d_info_len), dimension(:), allocatable vinfo_t3d
List of variable info.
subroutine set_boolean_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine set_double_array_t3d_d(INST, VARNAME, VALEUR, DIM1, IERR, BLOCK_INDEX)
subroutine get_double_t3d_d(INST, VARNAME, VALEUR, INDEX1, INDEX2, INDEX3, IERR)
subroutine get_double_array_t3d_d(INST, VARNAME, VALEUR, DIM1, IERR, BLOCK_INDEX)
integer, parameter unknown_var_error
character(len=error_mess_len) err_mess
Error message.
integer, parameter run_timestep_pos
subroutine get_integer_array_t3d_d(INST, VARNAME, VALEUR, DIM1, IERR)