1 /*
2 Copyright (C) 1998 Dennis Roddeman
3 email: dennis.roddeman@feat.nl
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software Foundation
18 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA
19 */
20
21 #include "tochnog.h"
22
check(long int idat,long int task)23 long int check( long int idat, long int task )
24
25 {
26 long int data_number=0, ok=1;
27
28 data_number = labs( idat );
29
30 if ( data_number==HEX8 )
31 return 0;
32 if ( data_number==HEX27 )
33 return 0;
34 if ( data_number==TET4 )
35 return 0;
36 if ( data_number==TET10 )
37 return 0;
38 if ( data_number==QUAD4 )
39 return 0;
40 if ( data_number==QUAD9 )
41 return 0;
42 if ( data_number==QUAD16 )
43 return 0;
44 if ( data_number==TRIA3 )
45 return 0;
46 if ( data_number==TRIA6 )
47 return 0;
48 if ( data_number==BAR2 )
49 return 0;
50 if ( data_number==BAR3 )
51 return 0;
52
53 if ( data_number==NODE )
54 ok = 1;
55 if ( data_number==ELEMENT )
56 ok = 1;
57 if ( data_number==TRUSS ) {
58 ok = check_unknown_atleastone( "materi_velocity_integrated",
59 "materi_displacement", task );
60 }
61 if ( data_number==TRUSSBEAM ) {
62 ok = check_unknown_atleastone( "materi_velocity_integrated",
63 "materi_displacement", task );
64 ok = ok && check_unknown( "beam_rotation", YES, task );
65 ok = ok && check_ndim( 2, 3, task );
66 }
67 if ( data_number==BAR )
68 ok = check_ndim( 1, 1, task );
69 if ( data_number==BOUNDA_FORCE )
70 ok = check_unknowns_are_specified( task );
71 if ( data_number==BOUNDA_SINE )
72 ok = check_unknowns_are_specified( task );
73 if ( data_number==BOUNDA_TIME )
74 ok = check_unknowns_are_specified( task );
75 if ( data_number==BOUNDA_TIME_FILE )
76 ok = check_unknowns_are_specified( task );
77 if ( data_number==BOUNDA_UNKNOWN )
78 ok = check_unknowns_are_specified( task );
79 if ( data_number==BRICK )
80 ok = check_ndim( 3, 3, task );
81 if ( data_number==CIRCLE )
82 ok = check_ndim( 2, 2, task );
83 if ( data_number==CIRCLE_HOLLOW )
84 ok = check_ndim( 2, 2, task );
85 if ( data_number==CONDIF ) {
86 ok = check_unknown( "condif_temperature", YES, task );
87 ok = ok && check_unknown( "wave_scalar", NO, task );
88 }
89 if ( data_number==CONDIF_CONVECTION ) {
90 ok = check_ndim( 2, 3, task );
91 ok = ok && check_unknown( "condif_temperature", YES, task );
92 }
93 if ( data_number==CONDIF_CONVECTION_GEOMETRY ) {
94 ok = check_ndim( 2, 3, task );
95 ok = ok && check_unknown( "condif_temperature", YES, task );
96 }
97 if ( data_number==CONDIF_RADIATION ) {
98 ok = check_ndim( 2, 3, task );
99 ok = check_unknown( "condif_temperature", YES, task );
100 }
101 if ( data_number==CONDIF_RADIATION_GEOMETRY ) {
102 ok = check_ndim( 2, 3, task );
103 ok = check_unknown( "condif_temperature", YES, task );
104 }
105 if ( data_number==CONTACT_FRICTION )
106 ok = check_unknown( "materi_velocity", YES, task );
107 if ( data_number==CONTACT_GEOMETRY )
108 ok = check_unknown( "materi_velocity", YES, task );
109 if ( data_number==CONTACT_GEOMETRY_SWITCH )
110 ok = check_unknown( "materi_velocity", YES, task );
111 if ( data_number==CONTACT_HEATGENERATION ) {
112 ok = check_unknown( "materi_velocity", YES, task );
113 ok = ok && check_unknown( "condif_temperature", YES, task );
114 }
115 if ( data_number==CONTACT_PENALTY_PRESSURE ) {
116 ok = check_unknown( "materi_velocity", YES, task );
117 ok = ok && check_unknown( "groundflow_pressure", YES, task );
118 }
119 if ( data_number==CONTACT_PENALTY_TEMPERATURE ) {
120 ok = check_unknown( "materi_velocity", YES, task );
121 ok = ok && check_unknown( "condif_temperature", YES, task );
122 }
123 if ( data_number==CONTACT_PENALTY_VELOCITY )
124 ok = check_unknown( "materi_velocity", YES, task );
125 if ( data_number==CONTACT_RELAXATION )
126 ok = check_unknown( "materi_velocity", YES, task );
127 if ( data_number==CONTACTSPRING ) {
128 if ( !materi_displacement )
129 ok = check_unknown( "materi_velocity_integrated", YES, task );
130 else if ( !materi_velocity_integrated )
131 ok = check_unknown( "materi_displacement", YES, task );
132 }
133 if ( data_number==CONTROL_CRACK ) {
134 ok = check_unknown( "materi_velocity", YES, task );
135 ok = ok && check_unknown( "materi_stress", YES, task );
136 }
137 if ( data_number==CONTROL_EIGEN )
138 ok = check_unknowns_are_specified( task );
139 if ( data_number==CONTROL_EIGEN_SCALE )
140 ok = check_unknowns_are_specified( task );
141 if ( data_number==CONTROL_MESH_GENERATE_BEAM ) {
142 ok = check_unknown_atleastone( "materi_velocity_integrated",
143 "materi_displacement", task );
144 ok = ok && check_unknown( "beam_rotation", YES, task );
145 ok = ok && check_ndim( 2, 3, task );
146 }
147 if ( data_number==CONTROL_MESH_GENERATE_CONTACTSPRING )
148 ok = check_unknown( "materi_velocity", YES, task );
149 if ( data_number==CONTROL_MESH_GENERATE_CONTACTSPRING_ELEMENT )
150 ok = check_unknown( "materi_velocity", YES, task );
151 if ( data_number==CONTROL_MESH_GENERATE_SPRING1 )
152 ok = check_unknown( "materi_velocity", YES, task );
153 if ( data_number==CONTROL_MESH_GENERATE_SPRING2 )
154 ok = check_unknown( "materi_velocity", YES, task );
155 if ( data_number==CONTROL_MESH_GENERATE_TRUSS )
156 ok = check_unknown( "materi_velocity", YES, task );
157 if ( data_number==CONTROL_MESH_GENERATE_TRUSSBEAM ) {
158 ok = check_unknown_atleastone( "materi_velocity_integrated",
159 "materi_displacement", task );
160 ok = ok && check_unknown( "beam_rotation", YES, task );
161 ok = ok && check_ndim( 2, 3, task );
162 }
163 if ( data_number==CONTROL_MESH_GENERATE_TRUSS_BEAM_LOOSE )
164 ok = check_unknown( "materi_velocity", YES, task );
165 if ( data_number==CONTROL_MESH_GENERATE_TRUSS_BEAM_MACRO )
166 ok = check_unknown( "materi_velocity", YES, task );
167 if ( data_number==CONTROL_MESH_MACRO_ELEMENT )
168 ok = check_ndim( 2, 3, task );
169 if ( data_number==CONTROL_MESH_SPLIT )
170 ok = check_ndim( 2, 3, task );
171 if ( data_number==CONTROL_OPTIONS_SOLVER )
172 ok = check_unknowns_are_specified( task );
173 if ( data_number==CONTROL_PRINT_GMV )
174 ok = check_ndim( 2, 3, task );
175 if ( data_number==CONTROL_PRINT_GID )
176 ok = check_ndim( 2, 3, task );
177 if ( data_number==CONTROL_PRINT_UNKNOWNS )
178 ok = check_unknowns_are_specified( task );
179 if ( data_number==CONTROL_PRINT_UNKNOWNSRHSIDE )
180 ok = check_unknowns_are_specified( task );
181 if ( data_number==CONTROL_RELAXATION_CONDIF_TEMPERATURE )
182 ok = check_unknown( "condif_temperature", YES, task );
183 if ( data_number==CONTROL_RELAXATION_MAXWELL_E ) {
184 ok = check_ndim( 2, 3, task );
185 ok = ok && check_unknown( "maxwell_er", YES, task );
186 ok = ok && check_unknown( "maxwell_ei", YES, task );
187 }
188 if ( data_number==CONTROL_RELAXATION_GROUNDFLOW_PRESSURE )
189 ok = check_unknown( "groundflow_pressure", YES, task );
190 if ( data_number==CONTROL_RELAXATION_WAVE_FSCALAR )
191 ok = check_unknown( "wave_fscalar", YES, task );
192 if ( data_number==CONTROL_RELAXATION_MATERI_VELOCITY )
193 ok = check_unknown( "materi_velocity", YES, task );
194 if ( data_number==CONTROL_UNKNOWN_FREEZE )
195 ok = check_unknowns_are_specified( task );
196 if ( data_number==CONTROL_UNKNOWN_RESET_GEOMETRY )
197 ok = check_unknowns_are_specified( task );
198 if ( data_number==CONTROL_UNKNOWN_RESET_UNKNOWN )
199 ok = check_unknowns_are_specified( task );
200 if ( data_number==CONTROL_UNKNOWN_RESET_VALUE )
201 ok = check_unknowns_are_specified( task );
202 if ( data_number==CONTROL_TIMESTEP_ITERATIONS_AUTOMATIC )
203 ok = check_unknowns_are_specified( task );
204 if ( data_number==CRACK_DIRECTION ) {
205 ok = check_unknown( "materi_velocity", YES, task );
206 ok = ok && check_unknown( "materi_stress", YES, task );
207 }
208 if ( data_number==CRACK_ELEMENTGROUP ) {
209 ok = check_unknown( "materi_velocity", YES, task );
210 ok = ok && check_unknown( "materi_stress", YES, task );
211 }
212 if ( data_number==CRACK_LENGTH ) {
213 ok = check_unknown( "materi_velocity", YES, task );
214 ok = ok && check_unknown( "materi_stress", YES, task );
215 }
216 if ( data_number==CRACK_NODES ) {
217 ok = check_unknown( "materi_velocity", YES, task );
218 ok = ok && check_unknown( "materi_stress", YES, task );
219 }
220 if ( data_number==CRACK_STRESSINTENSITYFACTOR ) {
221 ok = check_unknown( "materi_velocity", YES, task );
222 ok = ok && check_unknown( "materi_stress", YES, task );
223 }
224 if ( data_number==CRACK_TIP ) {
225 ok = check_unknown( "materi_velocity", YES, task );
226 ok = ok && check_unknown( "materi_stress", YES, task );
227 }
228 if ( data_number==CYLINDER_HOLLOW )
229 ok = check_ndim( 3, 3, task );
230 if ( data_number==DEPENDENCY_DIAGRAM )
231 ok = check_unknowns_are_specified( task );
232 if ( data_number==DEPENDENCY_ITEM )
233 ok = check_unknowns_are_specified( task );
234 if ( data_number==DOF_LABEL )
235 ok = check_unknowns_are_specified( task );
236 if ( data_number==ELEMENT_BEAM_MOMENT ) {
237 ok = check_unknown_atleastone( "materi_velocity_integrated",
238 "materi_displacement", task );
239 ok = ok && check_unknown( "beam_rotation", YES, task );
240 ok = ok && check_ndim( 2, 3, task );
241 }
242 if ( data_number==ELEMENT_TRUSS_FORCE )
243 ok = check_unknown( "materi_velocity", YES, task );
244 if ( data_number==FORCE_ELEMENT_EDGE )
245 ok = check_unknowns_are_specified( task );
246 if ( data_number==FORCE_ELEMENT_EDGE_NORMAL )
247 ok = check_unknown( "materi_velocity", YES, task );
248 if ( data_number==FORCE_ELEMENT_EDGE_NORMAL_SINE )
249 ok = check_unknowns_are_specified( task );
250 if ( data_number==FORCE_ELEMENT_EDGE_NORMAL_TIME )
251 ok = check_unknowns_are_specified( task );
252 if ( data_number==FORCE_ELEMENT_EDGE_GEOMETRY )
253 ok = check_unknowns_are_specified( task );
254 if ( data_number==FORCE_ELEMENT_EDGE_SINE )
255 ok = check_unknowns_are_specified( task );
256 if ( data_number==FORCE_ELEMENT_EDGE_TIME )
257 ok = check_unknowns_are_specified( task );
258 if ( data_number==FORCE_ELEMENT_VOLUME )
259 ok = check_unknowns_are_specified( task );
260 if ( data_number==FORCE_ELEMENT_VOLUME_FACTOR )
261 ok = check_unknowns_are_specified( task );
262 if ( data_number==FORCE_ELEMENT_VOLUME_GEOMETRY )
263 ok = check_unknowns_are_specified( task );
264 if ( data_number==FORCE_ELEMENT_VOLUME_SINE ) {
265 ok = check_unknowns_are_specified( task );
266 ok = ok && check_ndim( 1, 2, task );
267 }
268 if ( data_number==FORCE_ELEMENT_VOLUME_TIME ) {
269 ok = check_unknowns_are_specified( task );
270 ok = ok && check_ndim( 1, 2, task );
271 }
272 if ( data_number==FORCE_GRAVITY ) {
273 ok = check_unknown_atleastone( "materi_stress",
274 "groundflow_pressure", task );
275 }
276 if ( data_number==FORCE_GRAVITY_TIME ) {
277 ok = check_unknown_atleastone( "materi_stress",
278 "groundflow_pressure", task );
279 }
280 if ( data_number==GEOMETRY_BOUNDA_FACTOR )
281 ok = check_ndim( 2, 3, task );
282 if ( data_number==GEOMETRY_BOUNDA_SINE_X )
283 ok = check_ndim( 1, 3, task );
284 if ( data_number==GEOMETRY_BOUNDA_SINE_Y )
285 ok = check_ndim( 2, 3, task );
286 if ( data_number==GEOMETRY_BOUNDA_SINE_Z )
287 ok = check_ndim( 3, 3, task );
288 if ( data_number==GEOMETRY_CIRCLE )
289 ok = check_ndim( 2, 2, task );
290 if ( data_number==GEOMETRY_ELLIPSE )
291 ok = check_ndim( 2, 2, task );
292 if ( data_number==GEOMETRY_CYLINDER )
293 ok = check_ndim( 3, 3, task );
294 if ( data_number==GEOMETRY_CYLINDER_SEGMENT )
295 ok = check_ndim( 3, 3, task );
296 if ( data_number==GEOMETRY_POLYNOMIAL )
297 ok = check_ndim( 2, 3, task );
298 if ( data_number==GEOMETRY_QUADRILATERAL )
299 ok = check_ndim( 2, 3, task );
300 if ( data_number==GEOMETRY_SPHERE )
301 ok = check_ndim( 3, 3, task );
302 if ( data_number==GEOMETRY_SPHERE_SEGMENT )
303 ok = check_ndim( 3, 3, task );
304 if ( data_number==GEOMETRY_TRIANGLE )
305 ok = check_ndim( 2, 3, task );
306 if ( data_number==GROUNDFLOW ) {
307 ok = check_unknown( "groundflow_pressure", YES, task );
308 ok = check_unknown( "wave_scalar", NO, task );
309 }
310 if ( data_number==GROUNDFLOW_DENSITY )
311 ok = check_unknown( "groundflow_pressure", YES, task );
312 if ( data_number==GROUNDFLOW_PHREATICLEVEL )
313 ok = check_unknown_atleastone( "materi_stress",
314 "groundflow_pressure", task );
315 if ( data_number==GROUNDFLOW_PHREATICLEVEL_N ) {
316 ok = check_unknown( "groundflow_pressure", YES, task );
317 ok = ok && check_ndim( 3, 3, task );
318 }
319 if ( data_number==GROUNDFLOW_PHREATICLEVEL_BOUNDA )
320 ok = check_unknown( "groundflow_pressure", YES, task );
321 if ( data_number==GROUNDFLOW_PRESSURE )
322 ok = check_unknown( "groundflow_pressure", YES, task );
323 if ( data_number==GROUNDFLOW_PRESSURE_ATMOSPHERIC )
324 ok = check_unknown( "groundflow_pressure", YES, task );
325 if ( data_number==GROUP_BEAM_INERTIA ) {
326 ok = check_unknown_atleastone( "materi_velocity_integrated",
327 "materi_displacement", task );
328 ok = ok && check_unknown( "beam_rotation", YES, task );
329 ok = ok && check_ndim( 2, 3, task );
330 }
331 if ( data_number==GROUP_BEAM_MEMORY ) {
332 ok = check_unknown_atleastone( "materi_velocity_integrated",
333 "materi_displacement", task );
334 ok = ok && check_unknown( "beam_rotation", YES, task );
335 ok = ok && check_ndim( 2, 3, task );
336 }
337 if ( data_number==GROUP_BEAM_PLANE ) {
338 ok = check_unknown_atleastone( "materi_velocity_integrated",
339 "materi_displacement", task );
340 ok = ok && check_unknown( "beam_rotation", YES, task );
341 ok = ok && check_ndim( 3, 3, task );
342 }
343 if ( data_number==GROUP_BEAM_YOUNG ) {
344 ok = check_unknown_atleastone( "materi_velocity_integrated",
345 "materi_displacement", task );
346 ok = ok && check_unknown( "beam_rotation", YES, task );
347 ok = ok && check_ndim( 2, 3, task );
348 }
349 if ( data_number==GROUP_CONDIF_ABSORPTION )
350 ok = check_unknown( "condif_temperature", YES, task );
351 if ( data_number==GROUP_CONDIF_CONDUCTIVITY )
352 ok = check_unknown( "condif_temperature", YES, task );
353 if ( data_number==GROUP_CONDIF_DENSITY )
354 ok = check_unknown( "condif_temperature", YES, task );
355 if ( data_number==GROUP_CONDIF_CAPACITY )
356 ok = check_unknown( "condif_temperature", YES, task );
357 if ( data_number==GROUP_CONDIF_FLOW )
358 ok = check_unknown( "condif_temperature", YES, task );
359 if ( data_number==GROUP_CONTACTSPRING_COHESION ) {
360 if ( !materi_displacement )
361 ok = check_unknown( "materi_velocity_integrated", YES, task );
362 else if ( !materi_velocity_integrated )
363 ok = check_unknown( "materi_displacement", YES, task );
364 }
365 if ( data_number==GROUP_CONTACTSPRING_DIRECTION ) {
366 if ( !materi_displacement )
367 ok = check_unknown( "materi_velocity_integrated", YES, task );
368 else if ( !materi_velocity_integrated )
369 ok = check_unknown( "materi_displacement", YES, task );
370 }
371 if ( data_number==GROUP_CONTACTSPRING_FRICTION ) {
372 if ( !materi_displacement )
373 ok = check_unknown( "materi_velocity_integrated", YES, task );
374 else if ( !materi_velocity_integrated )
375 ok = check_unknown( "materi_displacement", YES, task );
376 }
377 if ( data_number==GROUP_CONTACTSPRING_FRICTION_AUTOMATIC ) {
378 if ( !materi_displacement )
379 ok = check_unknown( "materi_velocity_integrated", YES, task );
380 else if ( !materi_velocity_integrated )
381 ok = check_unknown( "materi_displacement", YES, task );
382 }
383 if ( data_number==GROUP_CONTACTSPRING_MEMORY ) {
384 if ( !materi_displacement )
385 ok = check_unknown( "materi_velocity_integrated", YES, task );
386 else if ( !materi_velocity_integrated )
387 ok = check_unknown( "materi_displacement", YES, task );
388 }
389 if ( data_number==GROUP_CONTACTSPRING_STIFFNESS ) {
390 if ( !materi_displacement )
391 ok = check_unknown( "materi_velocity_integrated", YES, task );
392 else if ( !materi_velocity_integrated )
393 ok = check_unknown( "materi_displacement", YES, task );
394 }
395 if ( data_number==GROUP_GROUNDFLOW_CAPACITY )
396 ok = check_unknown( "groundflow_pressure", YES, task );
397 if ( data_number==GROUP_GROUNDFLOW_MATERIDIVERGENCE ) {
398 ok = check_unknown( "groundflow_pressure", YES, task );
399 ok = ok && check_unknown( "materi_velocity", YES, task );
400 }
401 if ( data_number==GROUP_GROUNDFLOW_PERMEABILITY )
402 ok = check_unknown( "groundflow_pressure", YES, task );
403 if ( data_number==GROUP_INTEGRATION_POINTS )
404 ok = check_unknowns_are_specified( task );
405 if ( data_number==GROUP_MATERI_DAMAGE_MAZARS )
406 ok = check_unknown( "materi_damage", YES, task );
407 if ( data_number==GROUP_MATERI_DAMPING )
408 ok = check_unknown( "materi_velocity", YES, task );
409 if ( data_number==GROUP_MATERI_DENSITY )
410 ok = check_unknown( "materi_velocity", YES, task );
411 if ( data_number==GROUP_MATERI_DENSITY_GROUNDFLOW ) {
412 ok = check_unknown( "materi_velocity", YES, task );
413 ok = ok && check_unknown( "groundflow_pressure", YES, task );
414 }
415 if ( data_number==GROUP_MATERI_ELASTI_CAMCLAY_G ) {
416 ok = check_unknown( "materi_stress", YES, task );
417 ok = ok && check_unknown( "materi_history_variables", YES, task );
418 }
419 if ( data_number==GROUP_MATERI_ELASTI_CAMCLAY_POISSON ) {
420 ok = check_unknown( "materi_stress", YES, task );
421 ok = ok && check_unknown( "materi_history_variables", YES, task );
422 }
423 if ( data_number==GROUP_MATERI_ELASTI_COMPRESSIBILITY ) {
424 ok = check_unknown( "materi_stress", YES, task );
425 ok = ok && check_unknown( "materi_velocity", YES, task );
426 }
427 if ( data_number==GROUP_MATERI_ELASTI_LADE ) {
428 ok = check_unknown( "materi_stress", YES, task );
429 ok = ok && check_unknown( "materi_velocity", YES, task );
430 ok = ok && check_unknown( "materi_strain_total", YES, task );
431 }
432 if ( data_number==GROUP_MATERI_ELASTI_POISSON ) {
433 ok = check_unknown( "materi_stress", YES, task );
434 ok = ok && check_unknown( "materi_velocity", YES, task );
435 }
436 if ( data_number==GROUP_MATERI_ELASTI_TRANSVERSE_ISOTROPY ) {
437 ok = check_unknown( "materi_stress", YES, task );
438 ok = ok && check_unknown( "materi_velocity", YES, task );
439 ok = ok && check_unknown( "materi_strain_total", YES, task );
440 }
441 if ( data_number==GROUP_MATERI_ELASTI_YOUNG ) {
442 ok = check_unknown( "materi_stress", YES, task );
443 ok = ok && check_unknown( "materi_velocity", YES, task );
444 }
445 if ( data_number==GROUP_MATERI_ELASTI_YOUNG_POLYNOMIAL ) {
446 ok = check_unknown( "materi_stress", YES, task );
447 ok = ok && check_unknown( "materi_velocity", YES, task );
448 ok = ok && check_unknown( "materi_strain_total", YES, task );
449 }
450 if ( data_number==GROUP_MATERI_ELASTI_YOUNG_POWER ) {
451 ok = check_unknown( "materi_stress", YES, task );
452 ok = ok && check_unknown( "materi_velocity", YES, task );
453 ok = ok && check_unknown( "materi_strain_total", YES, task );
454 }
455 if ( data_number==GROUP_MATERI_EXPANSION_LINEAR ) {
456 ok = check_unknown( "condif_temperature", YES, task );
457 ok = ok && check_unknown( "materi_velocity", YES, task );
458 }
459 if ( data_number==GROUP_MATERI_EXPANSION_VOLUME ) {
460 ok = check_unknown( "condif_temperature", YES, task );
461 ok = ok && check_unknown( "materi_velocity", YES, task );
462 }
463 if ( data_number==GROUP_MATERI_FAILURE_DAMAGE ) {
464 ok = check_unknown( "materi_damage", YES, task );
465 ok = ok && check_unknown( "materi_strain_total", YES, task );
466 }
467 if ( data_number==GROUP_MATERI_FAILURE_CRUCHING )
468 ok = check_unknown( "materi_strain_total", YES, task );
469 if ( data_number==GROUP_MATERI_FAILURE_PLASTI_KAPPA )
470 ok = check_unknown( "materi_plasti_kappa", YES, task );
471 if ( data_number==GROUP_MATERI_FAILURE_RUPTURE )
472 ok = check_unknown( "materi_strain_total", YES, task );
473 if ( data_number==GROUP_MATERI_FAILURE_VOIDFRACTION )
474 ok = check_unknown( "materi_void_fraction", YES, task );
475 if ( data_number==GROUP_MATERI_HYPER_BESSELING ) {
476 ok = ok && check_unknown( "materi_strain_total", YES, task );
477 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
478 ok = ok && check_unknown( "materi_stress", YES, task );
479 }
480 if ( data_number==GROUP_MATERI_HYPER_MOONEY_RIVLIN ) {
481 ok = ok && check_unknown( "materi_strain_total", YES, task );
482 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
483 ok = ok && check_unknown( "materi_stress", YES, task );
484 }
485 if ( data_number==GROUP_MATERI_HYPER_VOLUMETRIC_LINEAR ) {
486 ok = ok && check_unknown( "materi_strain_total", YES, task );
487 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
488 ok = ok && check_unknown( "materi_stress", YES, task );
489 }
490 if ( data_number==GROUP_MATERI_HYPER_VOLUMETRIC_MURNAGHAN ) {
491 ok = ok && check_unknown( "materi_strain_total", YES, task );
492 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
493 ok = ok && check_unknown( "materi_stress", YES, task );
494 }
495 if ( data_number==GROUP_MATERI_HYPER_VOLUMETRIC_OGDEN ) {
496 ok = ok && check_unknown( "materi_strain_total", YES, task );
497 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
498 ok = ok && check_unknown( "materi_stress", YES, task );
499 }
500 if ( data_number==GROUP_MATERI_HYPER_VOLUMETRIC_SIMOTAYLOR ) {
501 ok = ok && check_unknown( "materi_strain_total", YES, task );
502 ok = ok && check_unknown( "materi_strain_elasti", YES, task );
503 ok = ok && check_unknown( "materi_stress", YES, task );
504 }
505 if ( data_number==GROUP_MATERI_MAXWELL_CHAIN )
506 ok = check_unknown( "materi_maxwell_stress", YES, task );
507 if ( data_number==GROUP_MATERI_MAXWELL_CHAIN_NONLINEAR )
508 ok = check_unknown( "materi_maxwell_stress", YES, task );
509 if ( data_number==GROUP_MATERI_MEMBRANE ) {
510 ok = check_ndim( 1, 2, task );
511 ok = ok & check_unknown( "materi_stress", YES, task );
512 ok = ok & check_unknown( "groundflow_pressure", NO, task );
513 }
514 if ( data_number==GROUP_MATERI_MEMORY )
515 ok = check_unknown( "materi_stress", YES, task );
516 if ( data_number==GROUP_MATERI_PLASTI_CAMCLAY ) {
517 ok = check_unknown( "materi_stress", YES, task );
518 ok = ok && check_unknown( "materi_history_variables", YES, task );
519 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
520 }
521 if ( data_number==GROUP_MATERI_PLASTI_CAP ) {
522 ok = check_unknown( "materi_stress", YES, task );
523 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
524 }
525 if ( data_number==GROUP_MATERI_PLASTI_COMPRESSION ) {
526 ok = check_unknown( "materi_stress", YES, task );
527 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
528 }
529 if ( data_number==GROUP_MATERI_PLASTI_DIPRISCO ) {
530 ok = check_unknown( "materi_stress", YES, task );
531 ok = ok && check_unknown( "materi_history_variables", YES, task );
532 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
533 }
534 if ( data_number==GROUP_MATERI_PLASTI_DIPRISCO_RT ) {
535 ok = check_unknown( "materi_stress", YES, task );
536 ok = ok && check_unknown( "materi_history_variables", YES, task );
537 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
538 }
539 if ( data_number==GROUP_MATERI_PLASTI_DRUCKPRAG ) {
540 ok = check_unknown( "materi_stress", YES, task );
541 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
542 }
543 if ( data_number==GROUP_MATERI_PLASTI_DRUCKPRAG_TENSIONCUTOFF ) {
544 ok = check_unknown( "materi_stress", YES, task );
545 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
546 }
547 if ( data_number==GROUP_MATERI_PLASTI_GURSON ) {
548 ok = check_unknown( "materi_stress", YES, task );
549 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
550 ok = ok && check_unknown( "materi_void_fraction", YES, task );
551 }
552 if ( data_number==GROUP_MATERI_PLASTI_HLC ) {
553 ok = check_unknown( "materi_stress", YES, task );
554 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
555 ok = ok && check_unknown( "materi_void_fraction", YES, task );
556 }
557 if ( data_number==GROUP_MATERI_PLASTI_HEATGENERATION ) {
558 ok = check_unknown( "materi_stress", YES, task );
559 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
560 ok = ok && check_unknown( "condif_temperature", YES, task );
561 }
562 if ( data_number==GROUP_MATERI_PLASTI_HYPO_INTERGRANULARSTRAIN ) {
563 ok = check_unknown( "materi_stress", YES, task );
564 ok = ok && check_unknown( "materi_strain_intergranular", YES, task );
565 }
566 if ( data_number==GROUP_MATERI_PLASTI_HYPO_PRESSUREDEPENDENTVOIDRATIO ) {
567 ok = check_unknown( "materi_stress", YES, task );
568 ok = ok && check_unknown( "materi_history_variables", YES, task );
569 }
570 if ( data_number==GROUP_MATERI_PLASTI_HYPO_WOLFERSDORFF ) {
571 ok = check_unknown( "materi_stress", YES, task );
572 ok = ok && check_unknown( "materi_history_variables", YES, task );
573 }
574 if ( data_number==GROUP_MATERI_PLASTI_KINEMATIC_HARDENING ) {
575 ok = check_unknown( "materi_stress", YES, task );
576 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
577 ok = ok && check_unknown( "materi_plasti_rho", YES, task );
578 }
579 if ( data_number==GROUP_MATERI_PLASTI_MATSUOKANAKAI ) {
580 ok = check_unknown( "materi_stress", YES, task );
581 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
582 }
583 if ( data_number==GROUP_MATERI_PLASTI_MOHRCOUL ) {
584 ok = check_unknown( "materi_stress", YES, task );
585 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
586 }
587 if ( data_number==GROUP_MATERI_PLASTI_MOHRCOUL_SOFTENING ) {
588 ok = check_unknown( "materi_stress", YES, task );
589 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
590 ok = ok && check_unknown( "materi_plasti_kappa", YES, task );
591 }
592 if ( data_number==GROUP_MATERI_PLASTI_STRESS ) {
593 ok = check_unknown( "materi_stress", YES, task );
594 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
595 }
596 if ( data_number==GROUP_MATERI_PLASTI_TENSION ) {
597 ok = check_unknown( "materi_stress", YES, task );
598 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
599 }
600 if ( data_number==GROUP_MATERI_PLASTI_USER ) {
601 ok = check_unknown( "materi_stress", YES, task );
602 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
603 }
604 if ( data_number==GROUP_MATERI_PLASTI_VISCO_EXPONENTIAL ) {
605 ok = check_unknown( "materi_stress", YES, task );
606 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
607 }
608 if ( data_number==GROUP_MATERI_PLASTI_VISCO_POWER ) {
609 ok = check_unknown( "materi_stress", YES, task );
610 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
611 }
612 if ( data_number==GROUP_MATERI_PLASTI_VONMISES ) {
613 ok = check_unknown( "materi_stress", YES, task );
614 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
615 }
616 if ( data_number==GROUP_MATERI_PLASTI_VONMISES_NADAI ) {
617 ok = check_unknown( "materi_stress", YES, task );
618 ok = ok && check_unknown( "materi_strain_plasti", YES, task );
619 ok = ok && check_unknown( "materi_plasti_kappa", YES, task );
620 }
621 if ( data_number==GROUP_MAXWELL_FREQUENCY_EIGEN ) {
622 ok = check_unknown( "residue", NO, task );
623 ok = ok && check_unknown( "maxwell_er", YES, task );
624 ok = ok && check_unknown( "maxwell_ei", YES, task );
625 }
626 if ( data_number==GROUP_MAXWELL_FREQUENCY_EPSILON ) {
627 ok = check_unknown( "residue", NO, task );
628 ok = ok && check_unknown( "maxwell_er", YES, task );
629 ok = ok && check_unknown( "maxwell_ei", YES, task );
630 }
631 if ( data_number==GROUP_MAXWELL_FREQUENCY_PML_EPSILONANDMU ) {
632 ok = check_unknown( "residue", NO, task );
633 ok = ok && check_unknown( "maxwell_er", YES, task );
634 ok = ok && check_unknown( "maxwell_ei", YES, task );
635 }
636 if ( data_number==GROUP_MAXWELL_FREQUENCY_PML_PLANES ) {
637 ok = check_unknown( "residue", NO, task );
638 ok = ok && check_unknown( "maxwell_er", YES, task );
639 ok = ok && check_unknown( "maxwell_ei", YES, task );
640 }
641 if ( data_number==GROUP_MAXWELL_FREQUENCY_EPSILON_ANISOTROPIC ) {
642 ok = check_unknown( "residue", NO, task );
643 ok = ok && check_unknown( "maxwell_er", YES, task );
644 ok = ok && check_unknown( "maxwell_ei", YES, task );
645 }
646 if ( data_number==GROUP_MAXWELL_FREQUENCY_J ) {
647 ok = check_unknown( "residue", NO, task );
648 ok = ok && check_unknown( "maxwell_er", YES, task );
649 ok = ok && check_unknown( "maxwell_ei", YES, task );
650 }
651 if ( data_number==GROUP_MAXWELL_FREQUENCY_MU ) {
652 ok = check_unknown( "residue", NO, task );
653 ok = ok && check_unknown( "maxwell_er", YES, task );
654 ok = ok && check_unknown( "maxwell_ei", YES, task );
655 }
656 if ( data_number==GROUP_MAXWELL_FREQUENCY_PENALTY ) {
657 ok = check_unknown( "residue", NO, task );
658 ok = ok && check_unknown( "maxwell_er", YES, task );
659 ok = ok && check_unknown( "maxwell_ei", YES, task );
660 }
661 if ( data_number==GROUP_MAXWELL_TIME_EPSILON ) {
662 ok = check_unknown( "residue", NO, task );
663 ok = ok && check_unknown( "maxwell_e", YES, task );
664 }
665 if ( data_number==GROUP_MAXWELL_TIME_EPSILON_ANISOTROPIC ) {
666 ok = check_unknown( "residue", NO, task );
667 ok = ok && check_unknown( "maxwell_e", YES, task );
668 }
669 if ( data_number==GROUP_MAXWELL_TIME_J ) {
670 ok = check_unknown( "residue", NO, task );
671 ok = ok && check_unknown( "maxwell_e", YES, task );
672 }
673 if ( data_number==GROUP_MAXWELL_TIME_MU ) {
674 ok = check_unknown( "residue", NO, task );
675 ok = ok && check_unknown( "maxwell_e", YES, task );
676 }
677 if ( data_number==GROUP_MAXWELL_TIME_PENALTY ) {
678 ok = check_unknown( "residue", NO, task );
679 ok = ok && check_unknown( "maxwell_e", YES, task );
680 }
681 if ( data_number==GROUP_SPRING_DIRECTION ) {
682 if ( !materi_displacement )
683 ok = check_unknown( "materi_velocity_integrated", YES, task );
684 else if ( !materi_velocity_integrated )
685 ok = check_unknown( "materi_displacement", YES, task );
686 }
687 if ( data_number==GROUP_SPRING_PLASTI ) {
688 if ( !materi_displacement )
689 ok = check_unknown( "materi_velocity_integrated", YES, task );
690 else if ( !materi_velocity_integrated )
691 ok = check_unknown( "materi_displacement", YES, task );
692 }
693 if ( data_number==GROUP_SPRING_STIFFNESS ) {
694 if ( !materi_displacement )
695 ok = check_unknown( "materi_velocity_integrated", YES, task );
696 else if ( !materi_velocity_integrated )
697 ok = check_unknown( "materi_displacement", YES, task );
698 }
699 if ( data_number==NODE_RHSIDE )
700 ok = check_unknowns_are_specified( task );
701 if ( data_number==GROUP_MATERI_STOKES )
702 ok = check_unknown( "materi_velocity", YES, task );
703 if ( data_number==GROUP_MATERI_VISCOSITY )
704 ok = check_unknown( "materi_velocity", YES, task );
705 if ( data_number==GROUP_MATERI_VISCOSITY_USER )
706 ok = check_unknown( "materi_velocity", YES, task );
707 if ( data_number==GROUP_MATERI_VISCOSITY_HEATGENERATION )
708 {
709 ok = check_unknown( "materi_velocity", YES, task );
710 ok = ok && check_unknown( "condif_temperature", YES, task );
711 }
712 if ( data_number==GROUP_TRUSS_AREA )
713 ok = check_unknown_atleastone( "materi_velocity_integrated",
714 "materi_displacement", task );
715 if ( data_number==GROUP_TRUSS_DENSITY )
716 ok = check_unknown_atleastone( "materi_velocity_integrated",
717 "materi_displacement", task );
718 if ( data_number==GROUP_TRUSS_MEMORY )
719 ok = check_unknown_atleastone( "materi_velocity_integrated",
720 "materi_displacement", task );
721 if ( data_number==GROUP_TRUSS_PLASTI )
722 ok = check_unknown_atleastone( "materi_velocity_integrated",
723 "materi_displacement", task );
724 if ( data_number==GROUP_TRUSS_ROPE )
725 ok = check_unknown_atleastone( "materi_velocity_integrated",
726 "materi_displacement", task );
727 if ( data_number==GROUP_TRUSS_YOUNG )
728 ok = check_unknown_atleastone( "materi_velocity_integrated",
729 "materi_displacement", task );
730 if ( data_number==GROUP_TYPE )
731 ok = check_unknowns_are_specified( task );
732 if ( data_number==GROUP_USER_DATA )
733 ok = check_unknown( "materi_strain_total", YES, task );
734 if ( data_number==GROUP_USER_UMAT )
735 ok = check_unknown( "materi_strain_total", YES, task );
736 if ( data_number==GROUP_WAVE_SPEED_OF_SOUND ) {
737 ok = check_unknown( "wave_scalar", YES, task );
738 ok = ok && check_unknown( "wave_fscalar", YES, task );
739 }
740 if ( data_number==MATERI )
741 ok = ok && check_unknown( "wave_scalar", NO, task );
742 if ( data_number==MATERI_STRAINENERGY )
743 ok = check_unknown( "materi_strainenergy", YES, task );
744 if ( data_number==MATERI_STRAIN_ELASTI )
745 ok = check_unknown( "materi_strain_elasti", YES, task );
746 if ( data_number==MATERI_STRAIN_PLASTI )
747 ok = check_unknown( "materi_strain_plasti", YES, task );
748 if ( data_number==MATERI_STRAIN_TOTAL )
749 ok = check_unknown( "materi_strain_total", YES, task );
750 if ( data_number==MATERI_STRESS )
751 ok = check_unknown( "materi_stress", YES, task );
752 if ( data_number==MATERI_VELOCITY )
753 ok = check_unknown( "materi_velocity", YES, task );
754 if ( data_number==MATERI_WORK ) {
755 ok = check_unknown( "materi_stress", YES, task );
756 ok = check_unknown( "materi_velocity", YES, task );
757 }
758 if ( data_number==MAXWELL_ECOMPLEX ) {
759 ok = check_unknown( "maxwell_er", YES, task );
760 ok = ok && check_unknown( "maxwell_ei", YES, task );
761 }
762 if ( data_number==MAXWELL_FREQUENCY_EXCITATION ) {
763 ok = check_unknown( "maxwell_er", YES, task );
764 ok = ok && check_unknown( "maxwell_ei", YES, task );
765 ok = ok && check_unknown( "residue", NO, task );
766 }
767 if ( data_number==MAXWELL_SCATTER_ENERGYCONSERVATION ) {
768 ok = check_unknown( "residue", NO, task );
769 ok = ok && check_unknown( "maxwell_er", YES, task );
770 ok = ok && check_unknown( "maxwell_ei", YES, task );
771 }
772 if ( data_number==MAXWELL_SCATTER_MATRIX_AMPLITUDE ) {
773 ok = check_ndim( 2, 3, task );
774 ok = ok && check_unknown( "maxwell_er", YES, task );
775 ok = ok && check_unknown( "maxwell_ei", YES, task );
776 }
777 if ( data_number==MAXWELL_SCATTER_MATRIX_AMPLITUDEDB ) {
778 ok = check_ndim( 2, 3, task );
779 ok = ok && check_unknown( "maxwell_er", YES, task );
780 ok = ok && check_unknown( "maxwell_ei", YES, task );
781 }
782 if ( data_number==MAXWELL_SCATTER_MATRIX_IMAGINARY ) {
783 ok = check_ndim( 2, 3, task );
784 ok = ok && check_unknown( "maxwell_er", YES, task );
785 ok = ok && check_unknown( "maxwell_ei", YES, task );
786 }
787 if ( data_number==MAXWELL_SCATTER_MATRIX_PHASE ) {
788 ok = check_ndim( 2, 3, task );
789 ok = ok && check_unknown( "maxwell_er", YES, task );
790 ok = ok && check_unknown( "maxwell_ei", YES, task );
791 }
792 if ( data_number==MAXWELL_SCATTER_MATRIX_REAL ) {
793 ok = check_ndim( 2, 3, task );
794 ok = ok && check_unknown( "maxwell_er", YES, task );
795 ok = ok && check_unknown( "maxwell_ei", YES, task );
796 }
797 if ( data_number==MAXWELL_SCATTER_PARAMETERS ) {
798 ok = check_ndim( 2, 3, task );
799 ok = ok && check_unknown( "maxwell_er", YES, task );
800 ok = ok && check_unknown( "maxwell_ei", YES, task );
801 }
802 if ( data_number==MAXWELL_SCATTER_PORT_INPUT ) {
803 ok = check_ndim( 2, 3, task );
804 ok = ok && check_unknown( "maxwell_er", YES, task );
805 ok = ok && check_unknown( "maxwell_ei", YES, task );
806 }
807 if ( data_number==MAXWELL_SCATTER_PORT_OUTPUT ) {
808 ok = check_ndim( 2, 3, task );
809 ok = ok && check_unknown( "maxwell_er", YES, task );
810 ok = ok && check_unknown( "maxwell_ei", YES, task );
811 }
812 if ( data_number==NODE_DAMPING )
813 ok = check_unknown( "materi_velocity", YES, task );
814 if ( data_number==NODE_DOF )
815 ok = check_unknowns_are_specified( task );
816 if ( data_number==NODE_DOF_CALCUL )
817 ok = check_unknowns_are_specified( task );
818 if ( data_number==NODE_EIGEN )
819 ok = check_unknowns_are_specified( task );
820 if ( data_number==NODE_MASS )
821 ok = check_unknown( "materi_velocity", YES, task );
822 if ( data_number==NODE_STIFFNESS ) {
823 if ( !materi_displacement )
824 ok = check_unknown( "materi_velocity_integrated", YES, task );
825 else if ( !materi_velocity_integrated )
826 ok = check_unknown( "materi_displacement", YES, task );
827 }
828 if ( data_number==GROUP_AXISYMMETRIC )
829 ok = check_ndim( 1, 2, task );
830 if ( data_number==OPTIONS_INERTIA )
831 ok = check_unknowns_are_specified( task );
832 if ( data_number==OPTIONS_MESH )
833 ok = check_unknown( "materi_velocity", YES, task );
834 if ( data_number==OPTIONS_NONLOCAL ) {
835 ok = check_unknown( "materi_plasti_f", YES, task );
836 ok = ok && check_unknown( "materi_plasti_f_nonlocal", YES, task );
837 }
838 if ( data_number==OPTIONS_NONLOCAL_SOFTVAR ) {
839 ok = check_unknown( "materi_plasti_softvar_local", YES, task );
840 ok = ok && check_unknown( "materi_plasti_softvar_nonlocal", YES, task );
841 }
842 if ( data_number==OPTIONS_RESIDUEFACTOR )
843 ok = check_unknowns_are_specified( task );
844 if ( data_number==OPTIONS_STABILIZATION )
845 ok = check_unknowns_are_specified( task );
846 if ( data_number==POST_LINE )
847 ok = check_unknowns_are_specified( task );
848 if ( data_number==POST_LINE_N )
849 ok = check_unknowns_are_specified( task );
850 if ( data_number==POST_LINE_DOF )
851 ok = check_unknowns_are_specified( task );
852 if ( data_number==POST_POINT )
853 ok = check_unknowns_are_specified( task );
854 if ( data_number==POST_POINT_DOF )
855 ok = check_unknowns_are_specified( task );
856 if ( data_number==POST_QUADRILATERAL ) {
857 ok = check_ndim( 2, 3, task );
858 ok = ok && check_unknowns_are_specified( task );
859 }
860 if ( data_number==POST_QUADRILATERAL_N ) {
861 ok = check_ndim( 2, 3, task );
862 ok = ok && check_unknowns_are_specified( task );
863 }
864 if ( data_number==POST_QUADRILATERAL_DOF ) {
865 ok = check_ndim( 2, 3, task );
866 ok = ok && check_unknowns_are_specified( task );
867 }
868 if ( data_number==PRINT_FAILURE )
869 ok = check_unknown( "materi_stress", YES, task );
870 if ( data_number==RECTANGLE )
871 ok = check_ndim( 2, 2, task );
872 if ( data_number==ROTATION_X_AXIS ) {
873 ok = check_unknown( "materi_velocity", YES, task );
874 ok = ok && check_ndim( 3, 3, task );
875 }
876 if ( data_number==ROTATION_Y_AXIS ) {
877 ok = check_unknown( "materi_velocity", YES, task );
878 ok = ok && check_ndim( 3, 3, task );
879 }
880 if ( data_number==ROTATION_Z_AXIS ) {
881 ok = check_unknown( "materi_velocity", YES, task );
882 ok = ok && check_ndim( 2, 3, task );
883 }
884 if ( data_number==SLIDE_GEOMETRY )
885 ok = check_unknown( "materi_velocity", YES, task );
886 if ( data_number==SLIDE_PENALTY )
887 ok = check_unknown( "materi_velocity", YES, task );
888 if ( data_number==SLIDE_FRICTION )
889 ok = check_unknown( "materi_velocity", YES, task );
890 if ( data_number==SPRING1 || data_number==SPRING2 ) {
891 if ( !materi_displacement )
892 ok = check_unknown( "materi_velocity_integrated", YES, task );
893 else if ( !materi_velocity_integrated )
894 ok = check_unknown( "materi_displacement", YES, task );
895 }
896 if ( data_number==TENDON ) {
897 ok = check_unknown( "materi_stress", YES, task );
898 }
899 if ( data_number==TENDON_ELASTI ) {
900 ok = check_unknown( "materi_stress", YES, task );
901 ok = ok && check_unknown( "materi_velocity", YES, task );
902 }
903 if ( data_number==TENDON_EXPANSION ) {
904 ok = check_unknown( "materi_stress", YES, task );
905 ok = ok && check_unknown( "condif_temperature", YES, task );
906 }
907 if ( data_number==TENDON_PLASTI ) {
908 ok = check_unknown( "materi_stress", YES, task );
909 ok = ok && check_unknown( "materi_velocity", YES, task );
910 }
911 if ( data_number==TENDON_STRESS ) {
912 ok = check_unknown( "materi_stress", YES, task );
913 ok = ok && check_unknown( "materi_velocity", YES, task );
914 }
915 if ( data_number==TENDON_STRESS_TIME ) {
916 ok = check_unknown( "materi_stress", YES, task );
917 ok = ok && check_unknown( "materi_velocity", YES, task );
918 }
919 if ( data_number==GROUP_VOLUME_FACTOR )
920 ok = check_ndim( 1, 2, task );
921 if ( data_number==VOLUME_FACTOR )
922 ok = check_ndim( 1, 2, task );
923 if ( data_number==WAVE ) {
924 ok = check_unknown( "wave_scalar", YES, task );
925 ok = ok && check_unknown( "wave_fscalar", YES, task );
926 ok = ok && check_unknown( "materi_velocity", NO, task );
927 }
928
929 return ok;
930 }
931
932
check_ndim(long int lower,long int higher,long int task)933 long int check_ndim( long int lower, long int higher, long int task )
934
935 {
936 long int ok=1;
937
938 if ( ndim<lower || ndim>higher ) {
939 if ( task==CHECK_USAGE_AND_ERROR ) {
940 pri( "\n\n Error: inconsistent with number_of_space_dimensions." );
941 exit(TN_EXIT_STATUS);
942 }
943 else {
944 assert( task==CHECK_USAGE );
945 ok = 0;
946 }
947 }
948
949 return ok;
950 }
951
check_unknown(const char * str,long int initialization_needs_to_exist,long int task)952 long int check_unknown(const char* str, long int initialization_needs_to_exist,
953 long int task )
954
955 {
956 long int iinitia=0, initialization_exists=0, ok=1, ninitia=0;
957
958 ninitia = db_len( INITIALIZATION_VALUES, 0, VERSION_NORMAL );
959
960 for ( iinitia=0; iinitia<ninitia; iinitia++ ) {
961 if ( !strcmp(str,initialization_names[iinitia]) )
962 initialization_exists = 1;
963 }
964
965 if ( initialization_needs_to_exist==YES && !initialization_exists ) {
966 if ( task==CHECK_USAGE_AND_ERROR ) {
967 cout << "\n\nError: " << str << " should be initialized.\n";
968 exit(TN_EXIT_STATUS);
969 }
970 else {
971 assert( task==CHECK_USAGE );
972 ok = 0;
973 }
974 }
975 else if ( initialization_needs_to_exist==NO && initialization_exists ) {
976 if ( task==CHECK_USAGE_AND_ERROR ) {
977 cout << "\n\nError: " << str << " should not be initialized.\n";
978 exit(TN_EXIT_STATUS);
979 }
980 else {
981 assert( task==CHECK_USAGE );
982 ok = 0;
983 }
984 }
985
986 return ok;
987 }
988
check_unknown_atleastone(const char * str1,const char * str2,long int task)989 long int check_unknown_atleastone( const char* str1, const char* str2, long int task )
990
991 {
992 long int iinitia=0, initialization1_exists=0,
993 initialization2_exists=0, ok=1, ninitia=0;
994
995 ninitia = db_len( INITIALIZATION_VALUES, 0, VERSION_NORMAL );
996
997 for ( iinitia=0; iinitia<ninitia; iinitia++ ) {
998 if ( !strcmp(str1,initialization_names[iinitia]) )
999 initialization1_exists = 1;
1000 if ( !strcmp(str2,initialization_names[iinitia]) )
1001 initialization2_exists = 1;
1002 }
1003
1004 if ( !initialization1_exists && !initialization2_exists ) {
1005 if ( task==CHECK_USAGE_AND_ERROR ) {
1006 cout << "\n\nError: at least one of " << str1 << " or " <<
1007 str2 << " should be initialized.\n";
1008 exit(TN_EXIT_STATUS);
1009 }
1010 else {
1011 assert( task==CHECK_USAGE );
1012 ok = 0;
1013 }
1014 }
1015
1016 return ok;
1017 }
1018
check_unknown_minimum(char str[],long int min,long int task)1019 long int check_unknown_minimum( char str[], long int min, long int task )
1020
1021 {
1022 long int ok=1, iinitia=0, ninitia=0, initialization_value=0,
1023 initialization_values[DATA_ITEM_SIZE];
1024 double ddum[1];
1025
1026 db( INITIALIZATION_VALUES, 0, initialization_values, ddum,
1027 ninitia, VERSION_NORMAL, GET );
1028
1029 for ( iinitia=0; iinitia<ninitia; iinitia++ ) {
1030 if ( !strcmp(str,initialization_names[iinitia]) )
1031 initialization_value = initialization_values[iinitia];
1032 }
1033
1034 if ( initialization_value<min ) {
1035 if ( task==CHECK_USAGE_AND_ERROR ) {
1036 cout << "\n\nError: " << str << " should be " << min << ".\n";
1037 exit(TN_EXIT_STATUS);
1038 }
1039 else {
1040 assert( task==CHECK_USAGE );
1041 ok = 0;
1042 }
1043 }
1044
1045 return ok;
1046 }
1047
1048
check_unknowns_are_specified(long int task)1049 long int check_unknowns_are_specified( long int task )
1050
1051 {
1052 long int ok=1;
1053
1054 if ( nuknwn==0 ) {
1055 if ( task==CHECK_USAGE_AND_ERROR ) {
1056 pri( "\n\nError: no unknowns (e.g. condif_temperature, ..) initialized");
1057 exit(TN_EXIT_STATUS);
1058 }
1059 else {
1060 assert( task==CHECK_USAGE );
1061 ok = 0;
1062 }
1063 }
1064
1065 return ok;
1066 }
1067