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     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19 #include <iostream>
20 #include <cassert>
21 #include <cctype>
22 #include <cfloat>
23 #include <fstream>
24 #include <iomanip>
25 #include <cmath>
26 #include <climits>
27 #include <cstdio>
28 #include <cstdlib>
29 #include <string>
30 #include <vector>
31 #include <ctime>
32 #include <inttypes.h>
33 #include <string.h>
34 #include "tnpetsc.h"
35 #include "tnsuplu.h"
36 #include "tnlapack.h"
37 #include "tnhypo.h"
38 #include "matrix.h"
39 #include "time.h"
40 #include "f2c.h"
41 
42 using namespace std;
43 
44 typedef long int integer;
45 typedef double doublereal;
46 
47   // version stuff: NODE and ELEMENT data can have more versions (i.e. meshes)
48 enum {
49   VERSION_NORMAL = 0,   // time=t
50   VERSION_START,        // time=start_time
51   VERSION_NEW,          // time=t+dt
52   VERSION_TMP,          // trash version used by several routines
53   VERSION_NEW_MESH_TMP, // trash version used by new_mesh
54   VERSION_NEW_MESH_GENERATED, // generated mesh in new_mesh
55   VERSION_PRINT,        // mesh for printing
56   VERSION_MACRO,        // mesh for control_macro
57   VERSION_EXTRUDE,      // mesh for extrude
58   MVERSION              // maximum number of versions, this must be the last item
59 };
60 
61 #define TOCHNOG_VERSION "Latest-jan-2014"
62 
63   // constants
64 #define MCHAR 100  // maximum length of names
65 #define MDIM 3 // maximum number of space dimensions
66 #define MNOL 27 // maximum number of nodes in an element, set if to 64 for HEX64
67 #define MSTRAIN 6 // maximum number of strain components
68 #define MTENDON 10 // maximum number of tendons in an element
69 #define MTYPE 10 // maximum number of types
70 #define MCALCUL 20 // maximum length of calcul records
71 #define MRANGE 500000 // maximum range length
72 #define MMAXWELL 50 // maximum number of maxwell chains
73 #define MTHREAD 64 // maximum number of threads
74 #define MAXIMUM_NODE 64 // always 64
75 #define DATA_ITEM_SIZE 190 // maximum length of (almost all) records
76 #define NONLOCAL_ITEM_SIZE 160 // maximum number of integration points for nonlocal calculation
77 #define TN_PRECISION 12 // precision in writing output file
78 #define MPOINT MNOL // maximum number of integration points in an element, always MNOL
79 #define MUKNWN DATA_ITEM_SIZE // maximum number of unknowns, always DATA_ITEM_SIZE
80 #define MPUKNWN MUKNWN // maximum number of primary unknowns, always MUKNWN
81 #define MPRINC 10 // maximum number of principal unknowns
82 #define MBOUNDA 1000 // maximum length bounda_unknown and bounda_force
83 #define MSTACK 10 // maximum lnumber of routines in routine stack
84 #define TN_EXIT_STATUS 1
85 
86 const double EPS_ISO=1.e-9;  // epsilon for isoparametric coordinates
87 const double EPS_COORD=1.e-9; // epsilon for coordinates
88 const double EPS_SMALL=1.e-12; // epsilon generic
89 const double EPS_VOLUME=1.e-6; // epsilon for element volume
90 const double EPS_MATERI_DIFFUSION_MINIMUM=0.5; // epsilon diffusion if an element is empty
91 const double EPS_MATERI_DENSITY_MINIMUM=1.e-9; // epsilon density if an element is empty
92 const double PIRAD = 3.14159265358979323846; // Abramowitz and M_PI in GLIBC
93 const double NO_YIELD_F=-1.e10; // yield function value for no yielding
94 const double BOUNDARY_REDUCTION_FACTOR=2./3.; // reduction factor granular material - wall
95 const double TINY=1.e-20;
96 
97   // database items + others
98 enum {
99   MINUS_ONE = 1,
100   ABOVE,
101   ABSOL,
102   ADD,
103   ADD_ALWAYS,
104   ALL,
105   ANY,
106   AREA,
107   AREA_ELEMENT_GROUP,
108   AREA_ELEMENT_GROUP_METHOD,
109   AREA_ELEMENT_GROUP_SEQUENCE,
110   AREA_ELEMENT_GROUP_SEQUENCE_ELEMENT,
111   AREA_ELEMENT_GROUP_SEQUENCE_ELEMENTGROUP,
112   AREA_ELEMENT_GROUP_SEQUENCE_GEOMETRY,
113   AREA_ELEMENT_GROUP_SEQUENCE_METHOD,
114   AREA_ELEMENT_GROUP_SEQUENCE_TIME,
115   AREA_NODE_DATAITEM,
116   AREA_NODE_DATAITEM_DOUBLE,
117   AREA_NODE_DATAITEM_INTEGER,
118   ASM,
119   AVERAGE,
120   BAR,
121   BAR2,
122   BAR3,
123   BAR4,
124   BEAM,
125   BEAM_ROTATION,
126   BELOW,
127   BCGS,
128   BICG,
129   BJACOBI,
130   BOUNDA,
131   BOUNDA_FORCE,
132   BOUNDA_SINE,
133   BOUNDA_TIME,
134   BOUNDA_TIME_FILE,
135   BOUNDA_TIME_USER,
136   BOUNDA_UNKNOWN,
137   BRICK,
138   CALCULATE_STRESSINTENSITYFACTOR,
139   CG,
140   CGS,
141   CHANGE,
142   CHANGE_DATAITEM,
143   CHANGE_DATAITEM_TIME,
144   CHANGE_DATAITEM_TIME_DISCRETE,
145   CHANGE_DATAITEM_TIME_USER,
146   CHANGE_GEOMETRY,
147   CHANGE_GEOMETRY_TIME_USER,
148   CHEBYCHEV,
149   CHECK,
150   CHECK_COMBINATION,
151   CHECK_INDEX,
152   CHECK_NUMBER,
153   CHECK_USAGE,
154   CHECK_USAGE_AND_ERROR,
155   CIRCLE,
156   CIRCLE_HOLLOW,
157   CLOSE,
158   COMPOSITE,
159   CONDIF,
160   CONDIF_CONVECTION,
161   CONDIF_CONVECTION_GEOMETRY,
162   CONDIF_RADIATION,
163   CONDIF_RADIATION_GEOMETRY,
164   CONDIF_TEMPERATURE,
165   CONTACT,
166   CONTACTSPRING,
167   CONTACT_FRICTION,
168   CONTACT_GEOMETRY,
169   CONTACT_GEOMETRY_SWITCH,
170   CONTACT_HEATGENERATION,
171   CONTACT_PENALTY_PRESSURE,
172   CONTACT_PENALTY_TEMPERATURE,
173   CONTACT_PENALTY_VELOCITY,
174   CONTACT_RELAXATION,
175   CONTACT_STICK,
176   CONTROL,
177   CONTROL_CRACK,
178   CONTROL_DATA_DELETE,
179   CONTROL_DATA_INITELDOF_GEOMETRY,
180   CONTROL_DATA_PUT,
181   CONTROL_DATA_PUT_DOUBLE,
182   CONTROL_DATA_PUT_DOUBLE_NODE,
183   CONTROL_DATA_PUT_INTEGER,
184   CONTROL_DISTRIBUTE,
185   CONTROL_DISTRIBUTE_VALUES,
186   CONTROL_EIGEN,
187   CONTROL_EIGEN_SCALE,
188   CONTROL_EIGEN_VALUES,
189   CONTROL_MATERI_DIFFUSION,
190   CONTROL_MESH_ADJUST_GEOMETRY,
191   CONTROL_MESH_DELETE_GEOMETRY,
192   CONTROL_MESH_DELETE_GEOMETRY_ELEMENT,
193   CONTROL_MESH_DELETE_GEOMETRY_ELEMENTGROUP,
194   CONTROL_MESH_DELETE_GEOMETRY_FACTOR,
195   CONTROL_MESH_DELETE_GEOMETRY_MOVENODES,
196   CONTROL_MESH_DELETE_SMALL,
197   CONTROL_MESH_EXTRUDE,
198   CONTROL_MESH_EXTRUDE_N,
199   CONTROL_MESH_GENERATE_BEAM,
200   CONTROL_MESH_GENERATE_CONTACTSPRING,
201   CONTROL_MESH_GENERATE_CONTACTSPRING_ELEMENT,
202   CONTROL_MESH_GENERATE_SPRING1,
203   CONTROL_MESH_GENERATE_SPRING2,
204   CONTROL_MESH_GENERATE_TRUSS,
205   CONTROL_MESH_GENERATE_TRUSSBEAM,
206   CONTROL_MESH_GENERATE_TRUSS_BEAM_LOOSE,
207   CONTROL_MESH_GENERATE_TRUSS_BEAM_MACRO,
208   CONTROL_MESH_MACRO,
209   CONTROL_MESH_MACRO_ELEMENT,
210   CONTROL_MESH_MACRO_PARAMETERS,
211   CONTROL_MESH_MACRO_SET_NODE_BOUNDARY,
212   CONTROL_MESH_MERGE,
213   CONTROL_MESH_MERGE_EPSCOORD,
214   CONTROL_MESH_MERGE_MACRO_GENERATE,
215   CONTROL_MESH_MERGE_NOT,
216   CONTROL_MESH_NEW_MESH,
217   CONTROL_MESH_NEW_MESH_ELEMENT,
218   CONTROL_MESH_NEW_MESH_REGION,
219   CONTROL_MESH_REFINE_GLOBALLY,
220   CONTROL_MESH_REFINE_GLOBALLY_GEOMETRY,
221   CONTROL_MESH_REFINE_LOCALLY,
222   CONTROL_MESH_REFINE_LOCALLY_GEOMETRY,
223   CONTROL_MESH_REFINE_LOCALLY_NOT,
224   CONTROL_MESH_REFINE_LOCALLY_ONLY,
225   CONTROL_MESH_REFINE_LOCALLY_UNKNOWN,
226   CONTROL_MESH_REMESH,
227   CONTROL_MESH_REMESH_FACTOR,
228   CONTROL_MESH_RENUMBER,
229   CONTROL_MESH_SPLIT,
230   CONTROL_MESH_SPLIT_ONLY,
231   CONTROL_OPTIONS_CONVECTION,
232   CONTROL_OPTIONS_INERTIA,
233   CONTROL_OPTIONS_RELAXATION,
234   CONTROL_OPTIONS_SKIP_GRAVITY,
235   CONTROL_OPTIONS_SKIP_GROUNDFLOW_MATERIDIVERGENCE,
236   CONTROL_OPTIONS_SKIP_GROUNDFLOW_NONLINEAR,
237   CONTROL_OPTIONS_SKIP_PLASTICITY,
238   CONTROL_OPTIONS_SOLVER,
239   CONTROL_OPTIONS_SOLVER_BICG_ERROR,
240   CONTROL_OPTIONS_SOLVER_BICG_ERROR_MINIMUM,
241   CONTROL_OPTIONS_SOLVER_PETSC_KSPTYPE,
242   CONTROL_OPTIONS_SOLVER_PETSC_MG,
243   CONTROL_OPTIONS_SOLVER_PETSC_PCTYPE,
244   CONTROL_PRINT,
245   CONTROL_PRINT_DATABASE,
246   CONTROL_PRINT_DATA_VERSUS_DATA,
247   CONTROL_PRINT_DX,
248   CONTROL_PRINT_DX_TIME,
249   CONTROL_PRINT_ELEMENT,
250   CONTROL_PRINT_FILTER,
251   CONTROL_PRINT_GID,
252   CONTROL_PRINT_GID_EMPTY,
253   CONTROL_PRINT_GID_TIME,
254   CONTROL_PRINT_GID_MESH,
255   CONTROL_PRINT_GMV,
256   CONTROL_PRINT_GMV_MESH,
257   CONTROL_PRINT_HISTORY,
258   CONTROL_PRINT_MATLAB,
259   CONTROL_PRINT_PLOTMTV,
260   CONTROL_PRINT_PLOTMTV_MESH,
261   CONTROL_PRINT_TECPLOT,
262   CONTROL_PRINT_TECPLOT_MESH,
263   CONTROL_PRINT_UNKNOWNS,
264   CONTROL_PRINT_UNKNOWNSRHSIDE,
265   CONTROL_PRINT_VTK,
266   CONTROL_RELAXATION_CONDIF_TEMPERATURE,
267   CONTROL_RELAXATION_GROUNDFLOW_PRESSURE,
268   CONTROL_RELAXATION_MATERI_VELOCITY,
269   CONTROL_RELAXATION_MAXWELL_E,
270   CONTROL_RELAXATION_WAVE_FSCALAR,
271   CONTROL_REPEAT,
272   CONTROL_REPEAT_UNTIL_ITEM,
273   CONTROL_REPEAT_UNTIL_TOLERANCE,
274   CONTROL_REPEAT_UNTIL_VALUE,
275   CONTROL_RESTART,
276   CONTROL_UNKNOWN_FREEZE,
277   CONTROL_UNKNOWN_RESET_UNKNOWN,
278   CONTROL_UNKNOWN_RESET_GEOMETRY,
279   CONTROL_UNKNOWN_RESET_VALUE,
280   CONTROL_TIMESTEP,
281   CONTROL_TIMESTEP_ITERATIONS,
282   CONTROL_TIMESTEP_ITERATIONS_AUTOMATIC,
283   CONTROL_TIMESTEP_ITERATIONS_AUTOMATIC_STOP,
284   CONTROL_TIMESTEP_SIZE_AUTOMATIC_DECREASE,
285   CONTROL_TIMESTEP_MULTIPLIER,
286   CR,
287   CRACK,
288   CRACK_DIRECTION,
289   CRACK_ELEMENTGROUP,
290   CRACK_LENGTH,
291   CRACK_NODES,
292   CRACK_STRESSINTENSITYFACTOR,
293   CRACK_TIP,
294   CYLINDER_HOLLOW,
295   DATABASE,
296   DEPENDENCY,
297   DEPENDENCY_DIAGRAM,
298   DEPENDENCY_ITEM,
299   DIAGONAL,
300   DOF,
301   DOF_AMOUNT,
302   DOF_LABEL,
303   DOF_PRINCIPAL,
304   DOF_SCAL_VEC_MAT,
305   DOF_TYPE,
306   DOUBLE_PRECISION,
307   DTIME,
308   DYNAMIC,
309   EISENSTAT,
310   ELEMENT,
311   ELEMENT_ADJUST,
312   ELEMENT_BEAM_DIRECTION,
313   ELEMENT_BEAM_MOMENT,
314   ELEMENT_CONTACTSPRING_DIRECTION,
315   ELEMENT_CONTACTSPRING_FORCE,
316   ELEMENT_DELETE_FACTOR,
317   ELEMENT_DELETE_TIMES,
318   ELEMENT_DISTRIBUTE,
319   ELEMENT_DISTRIBUTE_VALUES,
320   ELEMENT_DOF,
321   ELEMENT_DOF_INITIALISED,
322   ELEMENT_EMPTY,
323   ELEMENT_GROUP,
324   ELEMENT_GROUP_AREA_ELEMENT_GROUP,
325   ELEMENT_GROUP_AREA_ELEMENT_GROUP_SEQUENCE_ELEMENTGROUP,
326   ELEMENT_MACRO_GENERATE,
327   ELEMENT_MASS,
328   ELEMENT_MATRIX_DELETE,
329   ELEMENT_MATRIX_SECOND_VALUES,
330   ELEMENT_MATRIX_UNKNOWNS,
331   ELEMENT_MATRIX_VALUES,
332   ELEMENT_MIDDLE,
333   ELEMENT_NONLOCAL,
334   ELEMENT_NONLOCAL_IPOINT,
335   ELEMENT_NONLOCAL_WEIGHT,
336   ELEMENT_RADIUS,
337   ELEMENT_RHSIDE_DELETE,
338   ELEMENT_SPRING_DIRECTION,
339   ELEMENT_SPRING_FORCE,
340   ELEMENT_STRAINENERGY,
341   ELEMENT_TENDON_DIRECTION,
342   ELEMENT_TENDON_INTERSECTIONS,
343   ELEMENT_TENDON_NUMBER,
344   ELEMENT_TENDON_STRAIN,
345   ELEMENT_TENDON_STRESS,
346   ELEMENT_TENDON_VOLUME,
347   ELEMENT_TRUSS_DIRECTION,
348   ELEMENT_TRUSS_FORCE,
349   ELEMENT_VOLUME,
350   EMPTY,
351   EVERYTHING,
352   EXIT_TOCHNOG,
353   FIXED_IN_SPACE,
354   FOLLOW_MATERIAL,
355   FORCE,
356   FORCE_ELEMENT_EDGE,
357   FORCE_ELEMENT_EDGE_FACTOR,
358   FORCE_ELEMENT_EDGE_GEOMETRY,
359   FORCE_ELEMENT_EDGE_SINE,
360   FORCE_ELEMENT_EDGE_TIME,
361   FORCE_ELEMENT_EDGE_TIME_FILE,
362   FORCE_ELEMENT_EDGE_NORMAL,
363   FORCE_ELEMENT_EDGE_NORMAL_FACTOR,
364   FORCE_ELEMENT_EDGE_NORMAL_GEOMETRY,
365   FORCE_ELEMENT_EDGE_NORMAL_SINE,
366   FORCE_ELEMENT_EDGE_NORMAL_TIME,
367   FORCE_ELEMENT_EDGE_WATER,
368   FORCE_ELEMENT_EDGE_WATER_GEOMETRY,
369   FORCE_ELEMENT_EDGE_WATER_TIME,
370   FORCE_ELEMENT_VOLUME,
371   FORCE_ELEMENT_VOLUME_FACTOR,
372   FORCE_ELEMENT_VOLUME_GEOMETRY,
373   FORCE_ELEMENT_VOLUME_SINE,
374   FORCE_ELEMENT_VOLUME_TIME,
375   FORCE_GRAVITY,
376   FORCE_GRAVITY_TIME,
377   FROM,
378   FRONT,
379   GAUSS,
380   GEOMETRY,
381   GEOMETRY_BOUNDA_FACTOR,
382   GEOMETRY_BOUNDA_SINE_X,
383   GEOMETRY_BOUNDA_SINE_Y,
384   GEOMETRY_BOUNDA_SINE_Z,
385   GEOMETRY_BRICK,
386   GEOMETRY_CIRCLE,
387   GEOMETRY_CIRCLE_SEGMENT,
388   GEOMETRY_CIRCLE_SMALLSEGMENT,
389   GEOMETRY_CYLINDER,
390   GEOMETRY_CYLINDER_SEGMENT,
391   GEOMETRY_ELLIPSE,
392   GEOMETRY_LINE,
393   GEOMETRY_NUMBER,
394   GEOMETRY_POINT,
395   GEOMETRY_POLYNOMIAL,
396   GEOMETRY_QUADRILATERAL,
397   GEOMETRY_SET,
398   GEOMETRY_SPHERE,
399   GEOMETRY_SPHERE_SEGMENT,
400   GEOMETRY_TRIANGLE,
401   GEOMETRY_TRIANGLE_EPSISO,
402   GENERALIZED,
403   GET,
404   GET_AND_CHECK,
405   GET_FLOW_RULE,
406   GET_FLOW_RULE_GRAD,
407   GET_IF_EXISTS,
408   GET_YIELD_RULE,
409   GLOBAL_ELEMENTS,
410   GLOBAL_MASS,
411   GLOBAL_NODES,
412   GLOBAL_POINT_MATERI_DIFFUSION_LOST,
413   GLOBAL_POINT_MATERI_DIFFUSION_TOTAL,
414   GLOBAL_SOLVER_ERROR,
415   GLOBAL_SOLVER_ITERATIONS,
416   GLOBAL_STRAINENERGY,
417   GLOBAL_UNKNOWN_AVERAGE,
418   GLOBAL_UNKNOWN_MAX,
419   GLOBAL_UNKNOWN_MIN,
420   GLOBAL_UNKNOWN_NUMBER,
421   GLOBAL_UNKNOWN_SUM,
422   GLOBAL_VOLUME,
423   GMRES,
424   GROUND,
425   GROUNDFLOW,
426   GROUNDFLOW_ADDTOPRESSURE,
427   GROUNDFLOW_PHREATICLEVEL,
428   GROUNDFLOW_PHREATICLEVEL_N,
429   GROUNDFLOW_PHREATICLEVEL_BOUNDA,
430   GROUNDFLOW_PHREATICLEVEL_MINIMUM,
431   GROUNDFLOW_DENSITY,
432   GROUNDFLOW_PRESSURE,
433   GROUNDFLOW_PRESSURE_ATMOSPHERIC,
434   GROUNDFLOW_VELOCITY,
435   GROUP_AXISYMMETRIC,
436   GROUP_BEAM_AREA,
437   GROUP_BEAM_YOUNG,
438   GROUP_BEAM_INERTIA,
439   GROUP_BEAM_MEMORY,
440   GROUP_BEAM_PLANE,
441   GROUP_CONDIF_ABSORPTION,
442   GROUP_CONDIF_CAPACITY,
443   GROUP_CONDIF_CONDUCTIVITY,
444   GROUP_CONDIF_DENSITY,
445   GROUP_CONDIF_FLOW,
446   GROUP_CONTACTSPRING_COHESION,
447   GROUP_CONTACTSPRING_DIRECTION,
448   GROUP_CONTACTSPRING_FRICTION,
449   GROUP_CONTACTSPRING_FRICTION_AUTOMATIC,
450   GROUP_CONTACTSPRING_MEMORY,
451   GROUP_CONTACTSPRING_STIFFNESS,
452   GROUP_GROUNDFLOW_CAPACITY,
453   GROUP_GROUNDFLOW_CAPACITY_NONLINEAR_METHOD,
454   GROUP_GROUNDFLOW_CAPACITY_NONLINEAR_PARAMETERS,
455   GROUP_GROUNDFLOW_MATERIDIVERGENCE,
456   GROUP_GROUNDFLOW_PERMEABILITY,
457   GROUP_GROUNDFLOW_PERMEABILITY_NONLINEAR_METHOD,
458   GROUP_GROUNDFLOW_PERMEABILITY_NONLINEAR_PARAMETERS,
459   GROUP_GROUNDFLOW_POROSITY,
460   GROUP_INTEGRATION_METHOD,
461   GROUP_INTEGRATION_POINTS,
462   GROUP_MATERI_DAMAGE_MAZARS,
463   GROUP_MATERI_DAMPING,
464   GROUP_MATERI_DENSITY,
465   GROUP_MATERI_DENSITY_GROUNDFLOW,
466   GROUP_MATERI_ELASTI_CAMCLAY_G,
467   GROUP_MATERI_ELASTI_CAMCLAY_POISSON,
468   GROUP_MATERI_ELASTI_COMPRESSIBILITY,
469   GROUP_MATERI_ELASTI_LADE,
470   GROUP_MATERI_ELASTI_POISSON,
471   GROUP_MATERI_ELASTI_SMALLSTRAIN,
472   GROUP_MATERI_ELASTI_TRANSVERSE_ISOTROPY,
473   GROUP_MATERI_ELASTI_TRANSVERSE_ISOTROPY_GRAHOUL,
474   GROUP_MATERI_ELASTI_TSKH,
475   GROUP_MATERI_ELASTI_VOLUMETRIC_POISSON,
476   GROUP_MATERI_ELASTI_VOLUMETRIC_YOUNG_ORDER,
477   GROUP_MATERI_ELASTI_VOLUMETRIC_YOUNG_VALUES,
478   GROUP_MATERI_ELASTI_YOUNG,
479   GROUP_MATERI_ELASTI_YOUNG_POLYNOMIAL,
480   GROUP_MATERI_ELASTI_YOUNG_POWER,
481   GROUP_MATERI_ELASTI_YOUNG_STRAINSTRESS,
482   GROUP_MATERI_EXPANSION_LINEAR,
483   GROUP_MATERI_EXPANSION_VOLUME,
484   GROUP_MATERI_FAILURE_CRUCHING,
485   GROUP_MATERI_FAILURE_DAMAGE,
486   GROUP_MATERI_FAILURE_PLASTI_KAPPA,
487   GROUP_MATERI_FAILURE_RUPTURE,
488   GROUP_MATERI_FAILURE_VOIDFRACTION,
489   GROUP_MATERI_HYPER_BESSELING,
490   GROUP_MATERI_HYPER_BLATZ_KO,
491   GROUP_MATERI_HYPER_MOONEY_RIVLIN,
492   GROUP_MATERI_HYPER_NEOHOOKEAN,
493   GROUP_MATERI_HYPER_REDUCEDPOLYNOMIAL,
494   GROUP_MATERI_HYPER_STIFFNESS,
495   GROUP_MATERI_HYPER_VOLUMETRIC_OGDEN,
496   GROUP_MATERI_HYPER_VOLUMETRIC_LINEAR,
497   GROUP_MATERI_HYPER_VOLUMETRIC_MURNAGHAN,
498   GROUP_MATERI_HYPER_VOLUMETRIC_POLYNOMIAL,
499   GROUP_MATERI_HYPER_VOLUMETRIC_SIMOTAYLOR,
500   GROUP_MATERI_ISOTROPY,
501   GROUP_MATERI_MAXWELL_CHAIN,
502   GROUP_MATERI_MAXWELL_CHAIN_NONLINEAR,
503   GROUP_MATERI_MEMBRANE,
504   GROUP_MATERI_MEMORY,
505   GROUP_MATERI_PLASTI_AITSKH,
506   GROUP_MATERI_PLASTI_BOUNDARY,
507   GROUP_MATERI_PLASTI_BOUNDARY_FACTOR,
508   GROUP_MATERI_PLASTI_CAMCLAY,
509   GROUP_MATERI_PLASTI_CAMCLAY_INCREMENTAL,
510   GROUP_MATERI_PLASTI_CAP,
511   GROUP_MATERI_PLASTI_COMPRESSION,
512   GROUP_MATERI_PLASTI_DIPRISCO,
513   GROUP_MATERI_PLASTI_DIPRISCO_RT,
514   GROUP_MATERI_PLASTI_DRUCKPRAG,
515   GROUP_MATERI_PLASTI_DRUCKPRAG_APEX,
516   GROUP_MATERI_PLASTI_DRUCKPRAG_TENSIONCUTOFF,
517   GROUP_MATERI_PLASTI_DRUCKPRAG_TENSIONLIMIT,
518   GROUP_MATERI_PLASTI_GURSON,
519   GROUP_MATERI_PLASTI_HLC,
520   GROUP_MATERI_PLASTI_HEATGENERATION,
521   GROUP_MATERI_PLASTI_HYPO_LOWANGLES,
522   GROUP_MATERI_PLASTI_HYPO_COHESION,
523   GROUP_MATERI_PLASTI_HYPO_INTERGRANULARSTRAIN,
524   GROUP_MATERI_PLASTI_HYPO_PRESSUREDEPENDENTVOIDRATIO,
525   GROUP_MATERI_PLASTI_HYPO_WOLFERSDORFF,
526   GROUP_MATERI_PLASTI_INCREMENTAL_ERASERECENTHISTORY,
527   GROUP_MATERI_PLASTI_INCREMENTAL_FEERROR,
528   GROUP_MATERI_PLASTI_INCREMENTAL_FESUBSTEPS,
529   GROUP_MATERI_PLASTI_INCREMENTAL_MAXSUBSTEPS,
530   GROUP_MATERI_PLASTI_INCREMENTAL_MINSUBSTEPS,
531   GROUP_MATERI_PLASTI_INCREMENTAL_PRINTF,
532   GROUP_MATERI_PLASTI_INCREMENTAL_USEMATRIX,
533   GROUP_MATERI_PLASTI_KINEMATIC_HARDENING,
534   GROUP_MATERI_PLASTI_MATSUOKANAKAI,
535   GROUP_MATERI_PLASTI_MATSUOKANAKAI_APEX,
536   GROUP_MATERI_PLASTI_MATSUOKANAKAI_TENSIONCUTOFF,
537   GROUP_MATERI_PLASTI_MOHRCOUL,
538   GROUP_MATERI_PLASTI_MOHRCOUL_01,
539   GROUP_MATERI_PLASTI_MOHRCOUL_12,
540   GROUP_MATERI_PLASTI_MOHRCOUL_20,
541   GROUP_MATERI_PLASTI_MOHRCOUL_APEX,
542   GROUP_MATERI_PLASTI_MOHRCOUL_SOFTENING,
543   GROUP_MATERI_PLASTI_MOHRCOUL_TENSIONCUTOFF,
544   GROUP_MATERI_PLASTI_STRESS,
545   GROUP_MATERI_PLASTI_TENSION,
546   GROUP_MATERI_PLASTI_TSKH,
547   GROUP_MATERI_PLASTI_USER,
548   GROUP_MATERI_PLASTI_VISCO_ALWAYS,
549   GROUP_MATERI_PLASTI_VISCO_EXPONENTIAL,
550   GROUP_MATERI_PLASTI_VISCO_POWER,
551   GROUP_MATERI_PLASTI_VONMISES,
552   GROUP_MATERI_PLASTI_VONMISES_NADAI,
553   GROUP_MATERI_STOKES,
554   GROUP_MATERI_VISCOSITY,
555   GROUP_MATERI_VISCOSITY_HEATGENERATION,
556   GROUP_MATERI_VISCOSITY_USER,
557   GROUP_MATRIX_SECOND_VALUES,
558   GROUP_MATRIX_UNKNOWNS,
559   GROUP_MATRIX_VALUES,
560   GROUP_MAXWELL_FREQUENCY_PML_EPSILONANDMU,
561   GROUP_MAXWELL_FREQUENCY_PML_PLANES,
562   GROUP_MAXWELL_FREQUENCY_EIGEN,
563   GROUP_MAXWELL_FREQUENCY_EPSILON,
564   GROUP_MAXWELL_FREQUENCY_EPSILON_ANISOTROPIC,
565   GROUP_MAXWELL_FREQUENCY_J,
566   GROUP_MAXWELL_FREQUENCY_MU,
567   GROUP_MAXWELL_FREQUENCY_PENALTY,
568   GROUP_MAXWELL_TIME_EPSILON,
569   GROUP_MAXWELL_TIME_EPSILON_ANISOTROPIC,
570   GROUP_MAXWELL_TIME_J,
571   GROUP_MAXWELL_TIME_MU,
572   GROUP_MAXWELL_TIME_PENALTY,
573   GROUP_SPRING_DIRECTION,
574   GROUP_SPRING_STIFFNESS,
575   GROUP_SPRING_PLASTI,
576   GROUP_TIME,
577   GROUP_TRUSS_AREA,
578   GROUP_TRUSS_ROPE,
579   GROUP_TRUSS_DENSITY,
580   GROUP_TRUSS_MEMORY,
581   GROUP_TRUSS_PLASTI,
582   GROUP_TRUSS_YOUNG,
583   GROUP_TYPE,
584   GROUP_USER_DATA,
585   GROUP_USER_UMAT,
586   GROUP_VOLUME_FACTOR,
587   GROUP_WAVE_SPEED_OF_SOUND,
588   GROWTH,
589   HEX27,
590   HEX64,
591   HEX8,
592   H_REFINEMENT,
593   ICC,
594   ICONTROL,
595   ILU,
596   INCREMENTAL,
597   INITIALIZE,
598   INITIALIZATION_VALUES,
599   INTEGER,
600   INVERSE,
601   INVERSE_DETERMINE_NEW_ESTIMATES,
602   INVERSE_DETERMINE_SENSITIVITY,
603   INVERSE_HISTORY,
604   INVERSE_ITERATIONS,
605   INVERSE_ITERATION_NUMBER,
606   INVERSE_PARAMETER,
607   INVERSE_PARAMETER_LIMITS,
608   INVERSE_PARAMETER_SENSITIVITY,
609   INVERSE_PARAMETER_SET,
610   INVERSE_PARAMETER_STEP,
611   INVERSE_PARAMETER_VARIATION,
612   INVERSE_TARGET,
613   INVERSE_TARGET_DATA,
614   INVERSE_TARGET_TIMESTEP,
615   JACOBI,
616   LOBATTO,
617   LSQR,
618   LU,
619   MACRO,
620   MATERI,
621   MATERI_DAMAGE,
622   MATERI_DENSITY,
623   MATERI_DENSITY_MINIMUM,
624   MATERI_DIFFUSION,
625   MATERI_DIFFUSION_CORRECT,
626   MATERI_DIFFUSION_MINIMUM,
627   MATERI_DIFFUSION_ADJUST_GEOMETRY,
628   MATERI_DIFFUSION_FILL_GEOMETRY,
629   MATERI_DIFFUSION_FILL_EPSVELOCITY,
630   MATERI_DIFFUSION_SMOOTH,
631   MATERI_DIFFUSION_TEMPERATURE,
632   MATERI_DISPLACEMENT,
633   MATERI_HISTORY_VARIABLES,
634   MATERI_MAXWELL_STRESS,
635   MATERI_PLASTI_F,
636   MATERI_PLASTI_F_NONLOCAL,
637   MATERI_PLASTI_INCREMENTAL_SUBSTEPS,
638   MATERI_PLASTI_KAPPA,
639   MATERI_PLASTI_RHO,
640   MATERI_PLASTI_SOFTVAR_LOCAL,
641   MATERI_PLASTI_SOFTVAR_NONLOCAL,
642   MATERI_ROTATION,
643   MATERI_STRAINENERGY,
644   MATERI_STRAIN_ELASTI,
645   MATERI_STRAIN_INTERGRANULAR,
646   MATERI_STRAIN_PLASTI,
647   MATERI_STRAIN_TOTAL,
648   MATERI_STRESS,
649   MATERI_VELOCITY,
650   MATERI_VELOCITY_INTEGRATED,
651   MATERI_VOID_FRACTION,
652   MATERI_WORK,
653   MATRIX,
654   MATRIX_ITERATIVE_BICG,
655   MATRIX_ITERATIVE_PETSC,
656   MATRIX_SUPERLU,
657   MATRIX_SUPERLU_DIST,
658   MATRIX_SUPERLU_MT,
659   MATRIX_LAPACK,
660   MATRIX_LAPACK_GEN,
661   MAXFRE,
662   MAXIMAL,
663   MAXTIM,
664   MAXWELL,
665   MAXWELL_ECOMPLEX,
666   MAXWELL_E,
667   MAXWELL_FE,
668   MAXWELL_EI,
669   MAXWELL_ER,
670   MAXWELL_FREQUENCY,
671   MAXWELL_FREQUENCY_EXCITATION,
672   MAXWELL_SCATTER_ENERGYCONSERVATION,
673   MAXWELL_SCATTER_MATRIX_AMPLITUDE,
674   MAXWELL_SCATTER_MATRIX_AMPLITUDEDB,
675   MAXWELL_SCATTER_MATRIX_IMAGINARY,
676   MAXWELL_SCATTER_MATRIX_PHASE,
677   MAXWELL_SCATTER_MATRIX_REAL,
678   MAXWELL_SCATTER_PARAMETERS,
679   MAXWELL_SCATTER_PORT_INPUT,
680   MAXWELL_SCATTER_PORT_OUTPUT,
681   MAXWELL_TIME,
682   MESH,
683   METHOD1,
684   METHOD2,
685   MG,
686   MOMENT,
687   MINIMAL,
688   MISES,
689   NEGATIVE,
690   NO,
691   NODE,
692   NODE_ADJUST,
693   NODE_BOUNDARY,
694   NODE_BOUNDED,
695   NODE_DAMPING,
696   NODE_DOF,
697   NODE_DOF_CALCUL,
698   NODE_DOF_MATERI_DIFFUSION,
699   NODE_DOF_START_REFINED,
700   NODE_DOF_TMP,
701   NODE_EIGEN,
702   NODE_ELEMENT,
703   NODE_LHSIDE,
704   NODE_MACRO_GENERATE,
705   NODE_MASS,
706   NODE_NEL,
707   NODE_NODE,
708   NODE_NONLOCAL,
709   NODE_NONLOCAL_WEIGHT,
710   NODE_PHREATICLEVEL,
711   NODE_PRINT,
712   NODE_REMESH_ALLOWED,
713   NODE_REMESH_VELOCITY,
714   NODE_RHSIDE,
715   NODE_RHSIDE_PRINT,
716   NODE_SET,
717   NODE_START_REFINED,
718   NODE_STIFFNESS,
719   NONE,
720   NONLOCAL_ELEMENT_INFO,
721   NORMAL,
722   NOTHING,
723   NUMBER,
724   NUMBER_ITERATIONS,
725   ON,
726   OPTIONS_CONVECTION,
727   OPTIONS_ELEMENT_DOF,
728   OPTIONS_ELEMENTLOOP,
729   OPTIONS_INERTIA,
730   OPTIONS_MATRIX_GROUP,
731   OPTIONS_MATRIX_LENGTH,
732   OPTIONS_MESH,
733   OPTIONS_NONLOCAL,
734   OPTIONS_NONLOCAL_SOFTVAR,
735   OPTIONS_PROCESSORS,
736   OPTIONS_RELAXATION,
737   OPTIONS_RESIDUEFACTOR,
738   OPTIONS_SKIP_GRAVITY,
739   OPTIONS_SKIP_GROUNDFLOW_MATERIDIVERGENCE,
740   OPTIONS_SKIP_GROUNDFLOW_NONLINEAR,
741   OPTIONS_SKIP_PLASTICITY,
742   OPTIONS_SOLVER,
743   OPTIONS_SOLVER_BICG_ERROR,
744   OPTIONS_SOLVER_BICG_ERROR_MINIMUM,
745   OPTIONS_STABILIZATION,
746   PCG,
747   PHIMOB,
748   PLUS_DISPLACEMENT,
749   POINT_MATERI_DIFFUSION,
750   POINT_MATERI_DIFFUSION_PREVIOUS,
751   POSITIVE,
752   POST,
753   POST_CALCUL,
754   POST_CALCUL_SCAL_VEC_MAT,
755   POST_CALCUL_UNKNOWN_OPERAT,
756   POST_ERROR_ITEM,
757   POST_ERROR_MESH1,
758   POST_ERROR_MESH2,
759   POST_ERROR_RESULT,
760   POST_GLOBAL,
761   POST_INTEGRATE,
762   POST_INTEGRATE_RESULT,
763   POST_LINE,
764   POST_LINE_DOF,
765   POST_LINE_DOF_CALCUL,
766   POST_LINE_MOMENT,
767   POST_LINE_N,
768   POST_LINE_OPERAT,
769   POST_NODE,
770   POST_NODE_RESULT,
771   POST_NODE_RHSIDE_FIXED,
772   POST_NODE_RHSIDE_FREE,
773   POST_NODE_RHSIDE_RATIO,
774   POST_NODE_RHSIDE_RATIO_UNKNOWNTYPES,
775   POST_POINT,
776   POST_POINT_DOF,
777   POST_POINT_DOF_CALCUL,
778   POST_QUADRILATERAL,
779   POST_QUADRILATERAL_DOF,
780   POST_QUADRILATERAL_DOF_CALCUL,
781   POST_QUADRILATERAL_N,
782   PREONLY,
783   PRINT,
784   PRINT_ARITHMETIC,
785   PRINT_CONTROL,
786   PRINT_DEFINE,
787   PRINT_LASTDATABASE,
788   PRINT_FAILURE,
789   PRINT_FILTER,
790   PRINT_SOLVER,
791   PRINT_WHERE,
792   PRISM6,
793   PRIVAL,
794   PRIVEC,
795   PROJECT_EXACT,
796   PROJECT_ON_EDGE,
797   PUT,
798   P_COARSEN,
799   P_REFINEMENT,
800   RICHARDSON,
801   QUAD16,
802   QUAD4,
803   QUAD9,
804   RA,
805   RECTANGLE,
806   REMOVE,
807   RESIDUE,
808   RESTART,
809   ROTATION_X_AXIS,
810   ROTATION_Y_AXIS,
811   ROTATION_Z_AXIS,
812   SCALAR,
813   SEPARATE,
814   SEPARATE_INDEX,
815   SEPARATE_SEQUENTIAL,
816   SHELL,
817   SIZEDEV,
818   SIZETOT,
819   SLES,
820   SLIDE,
821   SLIDE_FRICTION,
822   SLIDE_GEOMETRY,
823   SLIDE_PENALTY,
824   SOR,
825   SPHERE,
826   SPRING,
827   SPRING1,
828   SPRING2,
829   START,
830   STATIC,
831   STEP,
832   STRESS,
833   SUM,
834   TARGET,
835   TARGET_ITEM,
836   TARGET_VALUE,
837   TCQMR,
838   TENDON,
839   TENDON_ELASTI,
840   TENDON_EXPANSION,
841   TENDON_PLASTI,
842   TENDON_SPLIT,
843   TENDON_SPLIT_ELEMENT,
844   TENDON_STRESS,
845   TENDON_STRESS_TIME,
846   TET10,
847   TET4,
848   TFQMR,
849   THERMAL,
850   TIME,
851   TIME_AT_START,
852   TIME_CALCULATION,
853   TIME_CURRENT,
854   TIME_NEW,
855   TIME_OLD,
856   TO,
857   TOTAL,
858   TOTAL_PIOLA,
859   TOTAL_LINEAR,
860   TRIA3,
861   TRIA6,
862   TRUSS,
863   TRUSSBEAM,
864   UNIFORM,
865   UPDATED,
866   UPDATED_WITHOUT_ROTATION,
867   USE,
868   USER,
869   VALUE,
870   VECTOR,
871   VOLUME,
872   VOLUME_FACTOR,
873   WAVE,
874   WAVE_FSCALAR,
875   WAVE_SCALAR,
876   YES,
877   X,
878   Y,
879   Z,
880   LAST_DUMMY }; // keep LAST_DUMMY always the last one
881 
882 #define MDAT LAST_DUMMY+DATA_ITEM_SIZE  // reserve space for unknowns
883 
884   // see initialization part in manual
885 extern long int echo, ndim, derivatives,
886   beam_rotation, condif_temperature,
887   groundflow_velocity, groundflow_pressure, materi_history_variables,
888   materi_damage, materi_density,
889   materi_diffusion, materi_displacement,
890   materi_maxwell_stress, materi_plasti_kappa,
891   materi_plasti_f, materi_plasti_f_nonlocal, materi_plasti_incremental_substeps,
892   materi_plasti_softvar_local,
893   materi_plasti_softvar_nonlocal,
894   materi_strain_intergranular, materi_plasti_rho, materi_strainenergy,
895   materi_strain_elasti, materi_strain_plasti, materi_strain_total,
896   materi_stress, materi_velocity, materi_velocity_integrated,
897   materi_void_fraction, materi_work,
898   maxwell_e, maxwell_fe,
899   maxwell_er, maxwell_ei,
900   residue, wave_scalar, wave_fscalar,
901   find_local_softvar, find_nonlocal_weights, nonlocal_first_set;
902 
903   // for internal use
904 extern long int
905   any_runtime, // 1 if runtime file found
906   nder, // number of derivatives (incl. primary unknown itself)
907   npuknwn, // number of primary unknowns
908   nuknwn, // number of unknowns (= npuknwn*nder)
909   nprinc, // number of principal unknowns
910   npoint, // number of integration points in element
911   npointmax, // number of integration points in element with maximal number of i. p.
912   dam_indx, // index stating start of materi_damage in node_dof
913   dens_indx, // index stating start of materi_density in node_dof
914   diff_indx, // index stating start of materi_diffusion in node_dof
915   dis_indx, // index stating start of materi_displacement in node_dof
916   ener_indx, // index stating start of materi_strainenergy in node_dof
917   epe_indx, // index stating start of materi_strain_elasti in node_dof
918   epi_indx, // index stating start of strain_intergranular in node_dof
919   epp_indx, // index stating start of materi_strain_plasti in node_dof
920   ept_indx, // index stating start of materi_strain_total in node_dof
921   maxe_indx, // index stating start of maxwell_e in node_dof
922   maxfe_indx, // index stating start of maxwell_fe in node_dof
923   maxer_indx, // index stating start of maxwell_e in node_dof
924   maxei_indx, // index stating start of maxwell_fe in node_dof
925   ei_indx, // index stating start of ei in node_dof
926   f_indx, // index stating start of materi_plasti_f in node_dof
927   fn_indx, // index stating start of materi_plasti_f_nonlocal in node_dof
928   fscal_indx, // index stating start of wave_fscalar in node_dof
929   gvel_indx, // index stating start of groundflow_velocity in node_dof
930   hisv_indx, // index stating start of materi_history_variables in node_dof
931   mstres_indx, // index stating start of materi_maxwell stress in node_dof
932   pres_indx, // index stating start of groundflow_pressure in node_dof
933   res_indx, // index stating start of residue in node_dof
934   kap_indx, // index stating start of materi_plasti_kappa in node_dof
935   rho_indx, // index stating start of materi_plasti_rho in node_dof
936   rot_indx, // index stating start of beam_rotation in node_dof
937   scal_indx, // index stating start of wave_scalar in node_dof
938   stres_indx, // index stating start of materi_stress in node_dof
939   substeps_indx, // index stating start of materi_plasti_incremental_substeps in node_dof
940   svloc_indx, // index stating start of materi_plasti_softvar_local in node_dof
941   svnonloc_indx, // index stating start of materi_plasti_softvar_nonlocal in node_dof
942   temp_indx, // index stating start of condif_temperature in node_dof
943   vel_indx, // index stating start of materi_velocity in node_dof
944   veli_indx, // index stating start of materi_velocity in node_dof
945   void_indx, // index stating start of materi_void_fraction in node_dof
946   work_indx; // index stating start of materi_work in node_dof
947 extern char
948   data_file[MCHAR], // data file name
949   data_file_base[MCHAR], // data file name base
950   post_calcul_names[DATA_ITEM_SIZE][MCHAR], // names for calcul
951   post_calcul_names_without_extension[DATA_ITEM_SIZE][MCHAR], // names for calcul
952   initialization_names[DATA_ITEM_SIZE][MCHAR]; // unknown initialization records
953 
954   // for map routine
955 extern long int map_version_from, map_version_to, map_always;
956 
957   // for post routines
958 extern long int post_found, post_node[4], post_node_length, npost_node;
959 extern double post_point[MDIM], post_point_dof[MUKNWN],
960   post_node_result[DATA_ITEM_SIZE];
961 
962   // for calcul routine
963 extern long int calcul_operat, calcul_matrix, calcul_ecomplex,
964   calcul_vector, calcul_scalar_indx, calcul_mat_indx, calcul_vec_indx;
965 
966   // for geometry routine
967 extern long int geometry_ent[2], *nodes_in_geometry;
968 
969   // for parallel computations
970 extern long int parallel_active;
971 
972   // for eigenvalue computations
973 extern long int eigen_active;
974 
975   // for solver
976 extern long int *solve_global_local, solve_nlocal, solve_options_matrix_group;
977 extern double *solve_b, *solve_x;
978 
979   // for swit
980 extern long int swit_element_stack, swit_node_stack;
981 extern char swit_routine_stack[MSTACK][MCHAR]; // routines called
982 
983   // added for options_element_dof
984 extern long int options_element_dof; 	   //in initia.cc
985 extern double options_nonlocal_softvar;  //in initia.cc
986 
987   // routines
988 void      adjust_geom( long int geometry_entity[], long int geometry_entity_edge[] );
989 void      area( long int element, long int name,
990             long int gr, long int nnol, long int nodes[],
991             double coord[], double new_dof[], double element_lhside[],
992             double element_matrix[], double element_rhside[] );
993 void      area_element_group( long int version );
994 void      area_element_group_sequence( );
995 void      area_node_dataitem( void );
996 void      array_add( double a[], double b[], double c[], long int n );
997 double    array_distance( double a[], double b[], double work[], long int n );
998 double    array_inproduct( double a[], double b[], long int n );
999 long int  array_member( long int i_list[], long int i, long int n, long int &indx );
1000 void      array_move( long int from[], long int to[], long int n );
1001 void      array_move( double from[], double to[], long int n );
1002 void      array_multiply( double a[], double b[], double c, long int n );
1003 long int  array_normalize( double a[], long int n );
1004 long int  array_null( double dval[], long int n );
1005 void      array_outproduct_2D( double a[], double b[] );
1006 void      array_outproduct_3D( double a[], double b[], double c[] );
1007 void      array_set( long int i[], long int ival, long int n );
1008 void      array_set( double d[], double dval, long int n );
1009 double    array_size( double a[], long int n );
1010 void      array_subtract( double a[], double b[], double c[], long int n );
1011 void      beam_2d( long int element, long int element_group,
1012             double coord[], double old_dof[], double new_dof[],
1013             double element_lhside[], double element_matrix[],
1014             double element_rhside[] );
1015 void      beam_3d( long int element, long int element_group,
1016             double coord[], double old_dof[], double new_dof[],
1017             double element_lhside[], double element_matrix[],
1018             double element_rhside[] );
1019 void      bounda( void );
1020 void      bounda_time_file_apply( long int iboun, double total_time,
1021             double bounda_time[], long int &ninc );
1022 void      calculate( void );
1023 void      calculate_operat( double unknown_values[], long int inod,
1024             double coord[], double dof[],
1025             double result[], long int &length_result );
1026 long int  check( long int idat, long int task );
1027 long int  check_ndim( long int lower, long int higher, long int task );
1028 long int  check_unknown( const char* str, long int initialization_needs_to_exist,
1029             long int task );
1030 long int  check_unknown_atleastone( const char* str1, const char* str2, long int task );
1031 long int  check_unknown_minimum( char str[], long int min, long int task );
1032 long int  check_unknowns_are_specified( long int task );
1033 void      crack( void );
1034 void      step_close( long int task, long int ipar, long int npar, long int ipar_i,
1035             long int ipar_n );
1036 void      step_start( long int task, long int control_solver[],
1037             double dtime, double time_current );
1038 void      calc_IJlode(double geosigma[9], double &I, double &J, double &lode, bool calcderiv,
1039 	    double dIdsig[3][3], double dJdsig[3][3], double dlodedsig[3][3]);
1040 void      calc_nonlocal_softvar();
1041 void      cinv( Matrix RealA, Matrix ImagA,
1042 			 Matrix& RealAinv, Matrix& ImagAinv );
1043 void      condif( long int element, long int gr, long int nnol, double h[],
1044             double volume, double new_unknowns[], double element_lhside[],
1045             double element_matrix[], double element_rhside[],
1046             double element_residue[] );
1047 void      C_matrix( double young, double poisson,
1048             double transverse_isotropy[], double C[MDIM][MDIM][MDIM][MDIM],
1049             long int task[] );
1050 void      C_matrix_lade( double lade_1, double lade_2, double lade_3,
1051             double I1, double sig_dev[], double C[MDIM][MDIM][MDIM][MDIM] );
1052 void      change_geometry( long int task, double dtime, double time_current );
1053 void      contactspring( long int element, long int name, long int element_group,
1054             long int nnol, long int nodes[], double coord[], double old_dof[], double new_dof[],
1055             double element_lhside[], double element_matrix[],
1056             double element_rhside[] );
1057 void      create_element( long int old_element, long int new_element,
1058             long int el[], long int length_el,
1059             long int version_from, long int version_to );
1060 void      create_node( long int old_nodes[], long int nnod,
1061             long int tmp_node_number, double tmp_node[], double tmp_node_dof[],
1062             double tmp_node_start_refined[], double tmp_node_dof_start_refined[],
1063             long int version_from, long int version_to );
1064 void      damage( long int gr, double new_epe[], double new_sig[],
1065             double old_damage, double &new_damage );
1066 void      damage_mazars( double materi_damage_mazars[], double new_epe[], double new_sig[],
1067             double old_damage, double &new_damage );
1068 void      data( long int task, double dtime, double time_current );
1069 void      date( void );
1070 long int  db( long int idat, long int index, long int *ival,
1071             double *dval, long int &length, long int version,
1072             long int task );
1073 long int  db_active_index( long int idat, long int index, long int version );
1074 void      db_allocate( long int idat, long int index, long int version,
1075             long int task );
1076 void      db_allocate_class( long int cl, long int index, long int version );
1077 void      db_close( );
1078 void      db_copy( long int idat, long int jdat, long int version );
1079 long int  db_data_length( long int idat );
1080 void      db_data_length_put( long int idat, long int length );
1081 long int  db_data_class( long int idat );
1082 long int  db_data_required( long int idat );
1083 double   *db_dbl( long int idat, long int version );
1084 double   *db_dbl( long int idat, long int index, long int version );
1085 void      db_delete( long int idat, long int version );
1086 void      db_delete_index( long int idat, long int index, long int version );
1087 void      db_error( long int idat, long int index );
1088 long int  db_external( long int idat );
1089 long int  db_fixed_length( long int idat );
1090 void      db_highest_index( long int idat, long int &max, long int version );
1091 void      db_initialize( long int dof_type[], long int dof_label[] );
1092 long int *db_int( long int idat, long int version );
1093 long int *db_int( long int idat, long int index, long int version );
1094 long int  db_len( long int idat, long int index, long int version );
1095 long int  db_max_index( long int idat, long int &max, long int version,
1096             long int task );
1097 char     *db_name( long int idat );
1098 long int  db_no_index( long int idat );
1099 long int  db_number( char name[] );
1100 long int  db_partialname( long int idat, char *str );
1101 long int  db_partialname_any( const char *str );
1102 long int  db_partialname_any_index( const char *str, long int index );
1103 long int  db_print_only( long int idat );
1104 long int  db_version( long int idat, long int version );
1105 void      db_version_copy( long int version_from, long int version_to );
1106 void      db_version_copy_data( long int idat, long int version_from, long int version_to );
1107 void      db_version_delete( long int version );
1108 void      db_set_int( long int idat, long int version );
1109 void      db_set_dbl( long int idat, long int version );
1110 long int  db_type( long int idat );
1111 void      delete_element( long int element, long int version );
1112 void      delete_geom( double time_current );
1113 void      delete_node( long int inod, long int version );
1114 void      distribute( void );
1115 void      elem( long int element, long int ithread );
1116 void      element_loop( void );
1117 void      element_middle_radius_set( void );
1118 long int  element_residue_norm_set( long int icontrol,
1119             long int control_refine_locally_unknown,
1120             long int element, double &element_residue_norm, long int version );
1121 void      element_volume_set( long int name, long int nodes[], long int version,
1122             double &element_volume );
1123 void      equal( void );
1124 long int  equations_factor( long int n, double **a, long int *p, long int *f );
1125 void      equations_solve( long int n, double **a, long int *p, double *x,
1126             double *b, long int *f );
1127 void      error( long int task );
1128 void      exit_tn( long int print_database_type );
1129 void      exit_tn_on_error( void );
1130 void      extrude( void );
1131 void      failure( double time_current );
1132 long int  filter( long int print_filter_index[], long int length_print_filter_index,
1133             long int idat, long int index, long int number, long int task );
1134 long int  fit_polynomial( double points[], long int npoint,
1135             double coefficients[], long int ncoefficient );
1136 void      force_element_volume_set( long int element, long int nnol, long int nodes[],
1137             double coord[], double force_element_volume[] );
1138 void      force_time_file_apply( long int iforce, long int table_name, double &load );
1139 void      force_gravity_calculate( double force_gravity[] );
1140 long int  force_time( double time_table[], const char* table_name,
1141             long int length, double &load );
1142 void      force_factor( long int factor_name, long int iforce,
1143             double coord[], double &factor );
1144 void      general( long int element, long int name, long int nnol, long int gr,
1145             long int type, long int nodes[], double coord_ip[],
1146 			      double old_dof[], double new_dof[],
1147             double old_unknowns[], double new_unknowns[],
1148             double grad_new_unknowns[], double h[],
1149             double d[], double volume, double grad_massflow[],
1150             double element_rhside[], double element_residue[],
1151             double element_lhside[], double element_matrix[] );
1152 void      generate_beam_truss( long int icontrol, long int task );
1153 void      generate_spring( long int icontrol );
1154 void      geometry( long int inod, double co[], long int geometry_entity[],
1155             long int &found, double &factor, double normal[],
1156             double &penetration, double projection[],
1157             long int node_type, long int projection_type, long int version );
1158 void      get_element_matrix_unknowns( long int element,
1159             long int element_matrix_unknowns[] );
1160 long int  get_group_data( long int idat, long int group, long int element,
1161             double new_unknowns[], double values[], long int &nvalue, long int task );
1162 double    get_materi_density( long int element, long int element_group,
1163             long int nnol, long int nodes[], double new_unknowns[] );
1164 char     *get_new_char( long int n );
1165 double   *get_new_dbl( long int n );
1166 long int *get_new_int( long int n );
1167 int      *get_new_int_short( long int n );
1168 void      groundflow_data( long int element, long int gr,
1169             double old_unknowns[], double new_unknowns[],
1170             double coord_ip[], double pe[], double &C );
1171 void      groundflow( long int element, long int group, long int nnol,
1172             double coord_ip[], double h[], double d[],
1173             double volume, double old_unknowns[],
1174             double new_unknowns[], double grad_new_unknowns[],
1175             double element_matrix[], double element_rhside[],
1176             double element_residue[] );
1177 void      groundflow_phreatic_apply( void );
1178 long int  groundflow_phreatic_coord( long int inod, double coord[], double dof[],
1179             double &total_pressure, double &static_pressure,
1180             double &location );
1181 void      group_materi_plasti_boundary_evaluate( long int nodes[], long int nnol,
1182             long int element_group, long int &plasti_on_boundary );
1183 void      hypoplasticity( long int element, long int gr,
1184             long int formulation, double old_hisv[], double new_hisv[],
1185             double old_unknowns[], double new_unknowns[],
1186             double inc_ept[], double old_epi[], double new_epi[],
1187             double rotated_old_sig[], double new_sig[],
1188             double *Chypo, double softvar_nonl, double &softvar_l );
1189 void      hyperelasticity( long int gr, long int element, long int memory,
1190             double unknowns[], double new_epe[],
1191             double sig[], double Chyper[MDIM][MDIM][MDIM][MDIM] );
1192 void      hyper_Cmat( long int gr, long int element, long int memory,
1193             double unknowns[], double epe[], double Chyper[MDIM][MDIM][MDIM][MDIM] );
1194 void      hyper_law( long int gr, long int element, double unknowns[], double C[], double &W );
1195 long int  hyper_stress( long int gr, long int element, long int memory, double unknowns[],
1196             double epe[], double stress[] );
1197 void      initialize( void );
1198 void      input();
1199 void      input_check_required();
1200 void      input_convert_to_lower_case( char str[] );
1201 void      input_read_string( long int echo, char str[], double &d, long int &d_is_set );
1202 void      input_runtime( void );
1203 void      input_skip_comment( char str[] );
1204 long int  integration_gauss( long int niso, double iso[], double weight_iso[]);
1205 long int  integration_lobatto( long int niso, double iso[],
1206             double weight_iso[] );
1207 void      interpolate_geometry( long int geometry_entity[],
1208             long int node_numbers[], long int n,
1209             double test_coord[], double tmp_node[],
1210             double test_coord_start_refined[],
1211             double tmp_node_start_refined[],
1212             long int project_type, long int version );
1213 void      interpolation_polynomial( double iso, long int npol, double h_pol[],
1214             double p_pol[] );
1215 long int  intersect_line_with_line( double line_a0[], double line_a1[],
1216             double line_b0[], double line_b1[], double &iso_line_a,
1217             double &iso_line_b );
1218 long int  intersect_line_with_point( double line0[], double line1[],
1219             double point[], double &iso_line );
1220 long int  intersect_line_with_triangle( double line0[], double line1[],
1221             double triangle0[], double triangle1[], double triangle2[],
1222             double &iso_line, double iso_triangle[] );
1223 void      inverse_calculation( long int ipar, long int npar, long int ipar_i,
1224             long int ipar_n, long int max_time, long int task );
1225 void      iteration_start( void );
1226 void      itoa( int n, char str[] );
1227 void      locate( void );
1228 char     *long_to_a( long int i, char str[] );
1229 void      macro( void );
1230 void      make_dev(double tnz[9], double dev[9]);
1231 void      map_element( long int element );
1232 void      map_node( long int inod );
1233 void      materi( long int element, long int group, long int nnol,
1234             long int npoint, long int nodes[],
1235             long int plasti_on_boundary, double coord_ip[],
1236             double old_coord[], double h[], double new_d[],
1237             double new_b[], double volume,
1238             double old_unknowns[], double new_unknowns[],
1239             double old_grad_old_unknowns[], double old_grad_new_unknowns[],
1240             double new_grad_new_unknowns[], double element_lhside[],
1241             double element_matrix[], double element_rhside[],
1242             double element_residue[], double tendon_element_rhside[] );
1243 void      materi_diffusion_adjust( void );
1244 void      materi_diffusion_adjust_geom( long int geometry_entity[],
1245             long int geometry_entity_edge[] );
1246 void      materi_diffusion_calculate( long int task );
1247 void      materi_diffusion_fill( void );
1248 void      materi_diffusion_smooth( void );
1249 void      materi_diffusion_temperature( void );
1250 void      matrix_ab( double *a, double *b, double *c, long int n, long int m,
1251             long int k );
1252 void      matrix_abat( double a[], double b[], double c[], double work[],
1253             long int n );
1254 void      matrix_abt( double *a, double *b, double *c, long int n, long int m,
1255             long int k );
1256 void      matrix_atb( double *a, double *b, double *c, long int n, long int m,
1257             long int k );
1258 void      matrix_atba( double a[], double b[], double c[],
1259             double work[], long int n, long int m );
1260 void      matrix_a4b( double a[MDIM][MDIM][MDIM][MDIM], double b[],
1261             double c[] );
1262 void      matrix4_ab( double a[], double b[], double c[3][3][3][3] );
1263 void      matrix_a_contr_b( double a[], double b[], double &c );
1264 void      matrix_ab4( double a[], double b[3][3][3][3], double c[] );
1265 double    matrix_determinant( double a[], long int n );
1266 void      matrix_eigenvalues( double a[], double eigenvalues[] );
1267 void      matrix_insert( double *a, long int n, long int m,
1268             double *b, long int k, long int l, long int p );
1269 void      matrix_invariants( double matrix[], double inv[] );
1270 long int  matrix_inverse( double mat[], double inv_mat[], double &det,
1271             long int n );
1272 void      matrix_inverse_general(double *matr, double *inv, int P);
1273 void      matrix_jacobi( double *a, long int n, double d[],
1274             double *v, long int *nrot);
1275 void      matrix_symmetric( double a[], long int n );
1276 void      maxwell( long int type, long int element,
1277             long int gr, long int nnol, double volume,
1278             double new_unknowns[],
1279             double old_dof[], double new_dof[],
1280             double h[], double d[], double element_lhside[],
1281             double element_matrix[], double element_matrix_second[],
1282             double element_rhside[] );
1283 void      maxwell_scatter( void );
1284 long int  membrane_apply( long int element, long int gr, double memmat[3][3],
1285             double inc_ept[], double inc_epe[], double new_ept[],
1286             double new_epe[], double new_sig[] );
1287 void      merge( void );
1288 void      mesh_add( long int version_from, long int version_to );
1289 void      mesh_delete_small( long int version );
1290 void      mesh_has_changed( long int version );
1291 void      mesh_split( long int version );
1292 void      new_mesh( void );
1293 void      new_mesh_version( long int version, double delta );
1294 void      nod_nod( long int version );
1295 void      nonlocal_set( );
1296 void      nonlocal_apply( );
1297 void      ordered_list_apply( long int inod, long int ordered_nodes[],
1298             long int new_max_node, double coord_new[],
1299             double eps_coord, long int &equal, long int task );
1300 void      parallel_calcul_node( void );
1301 void      parallel_contact( void );
1302 void      parallel_element_loop( void );
1303 void      parallel_geometry( void );
1304 void      parallel_map_element( void );
1305 void      parallel_map_node( void );
1306 void      parallel_new_dof_before( void );
1307 void      parallel_new_dof_diagonal( void );
1308 void      parallel_post_point( void );
1309 void      parallel_post_node( void );
1310 void      parallel_solve_iterative_bicg_element( void );
1311 void      parallel_solve_iterative_bicgs_element( void );
1312 void      parallel_sys_initialize( void );
1313 void      parallel_sys_lock( void );
1314 void      parallel_sys_next_of_loop( long int next_of_loop[],
1315             long int max_loop, long int &nloop, long int &ithread );
1316 void      parallel_sys_routine( void (*routine)(void) );
1317 void      parallel_sys_unlock( void );
1318 void      plasti_incr( double rotated_old_sig[], double inc_ept[], double old_epp[],
1319 	    double new_ept[], double C[3][3][3][3], double old_hisv[], long int plasti_type,
1320 	    double plasti_dt[], long int lenght_pl, long int gr, long int element,
1321 	    double softvar_nonl, double &softvar_l,
1322             double new_sigv[], double inc_epp[], double new_hisv[], double &new_f,
1323 	    double &new_substeps,
1324 	    double Cep_cons[3][3][3][3]);
1325 void      plasti_rule( long int element, long int group,
1326             long int plasti_on_boundary, double user_data[],
1327             double new_unknowns[], double new_grad_new_unknowns[],
1328             double old_hisv[], double new_hisv[],
1329             double old_epp[], double inc_epp[], double inc_ept[],
1330             long int task, long int &plasti_type,
1331             double sig[], double &f, double &new_f, double dir[] );
1332 long int  point_el( double point[], double coord[], double weight[],
1333             long int name, long int nnol );
1334 void      pol( long int element, long int element_group,
1335             long int name, long int nnol, double old_coord[],
1336             double new_coord[], long int &npoint, double h[],
1337             double old_d[], double new_d[], double new_b[],
1338             double volume[] );
1339 void      post( long int task );
1340 void      post_global( void );
1341 void      post_integrate( void );
1342 void      post_node_rhside_fixed_free( void );
1343 void      pri( const char *s );
1344 void      pri( const char *s, const char *st );
1345 void      pri( const char *s, int i );
1346 void      pri( const char *s, long int i);
1347 void      pri( const char *s, double d );
1348 void      pri( const char *s, int *i, int n );
1349 void      pri( const char *s, long int *i, long int n );
1350 void      pri( const char *s, double *d, long int n );
1351 void      pri( const char *s, long int *iar, long int n, long int m );
1352 void      pri( const char *s, double *d, long int n, long int m );
1353 void      print_cmd( void );
1354 void      print_data_versus_data( long int ival[], long int length );
1355 void      print_database( long int task, long int version, long int idat );
1356 void      print_dx( long int final_call );
1357 void      print_element( long int data_item_name );
1358 void      print_gid( long int task );
1359 long int  print_gid_5( long int task );
1360 long int  print_gid_6( long int task );
1361 void      print_giddata( long int task );
1362 void      print_gmv( long int icontrol, long int ival[] );
1363 void      print_history( long int ival[], long int nval );
1364 void      print_plotmtv( long int icontrol, long int ival[] );
1365 void      print_matlab( void );
1366 void      print_restart( long int icontrol );
1367 void      print_tecplot( long int ival[] );
1368 void      print_unknowns( void );
1369 void      print_unknownsrhside( void );
1370 void      print_vtk( long int icontrol );
1371 long int  project_point_exactly_on_line( double coord[], double coord0[],
1372             double coord1[], double weight[] );
1373 long int  project_point_exactly_on_quad( double coord[], double coord0[],
1374             double coord1[], double coord2[], double coord3[], double weight[] );
1375 long int  project_point_exactly_on_triangle( double coord[], double coord0[],
1376             double coord1[], double coord2[], double weight[] );
1377 long int  project_point_on_line( double coord[], double coord0[],
1378             double coord1[], double weight[] );
1379 long int  project_point_on_triangle( double coord[], double coord0[],
1380             double coord1[], double coord2[], double weight[] );
1381 void      range_expand( long int ival[], long int integer_range[],
1382             long int &length, long int &range_length );
1383 void      range_scan( long int echo, double d, long int d_is_set,
1384             long int ival[], long int &length );
1385 void      range_test_expand( long int i );
1386 void      range_test_scan( long int i );
1387 void      refine_locally( void );
1388 void      refine_globally( long int control_refine_globally[4],
1389             long int length_control_refine_globally,
1390             long int use_control_refine_globally_geometry,
1391             long int control_refine_globally_geometry[2],
1392             long int project_type, long int version );
1393 void      remesh( long int version );
1394 void      renumbering( long int version, long int fill_old_numbers, long int lowest_element,
1395             long int lowest_node, long int old_node_numbers[],
1396             long int old_element_numbers[] );
1397 void      renumbering_check( long int idat );
1398 long int  repeat( long int &start_control );
1399 void      restart( void );
1400 double    scalar_dabs( double a );
1401 double    scalar_dmax( double a, double b );
1402 double    scalar_dmin( double a, double b );
1403 long int  scalar_imax( long int a, long int b );
1404 double    scalar_power( double a, double b );
1405 double    scalar_ran_normal( int &idum );
1406 double    scalar_ran_uniform( int &idum );
1407 double    scalar_sign( double a );
1408 double    scalar_square( double a );
1409 void      set_deften_etc( long int element, long int gr, long int nnol,
1410             double h[], double old_coord[],
1411             double old_unknowns[], double new_unknowns[],
1412             double old_grad_old_unknowns[], double old_grad_new_unknowns[],
1413             double old_deften[], double new_deften[],
1414             double old_ept[], double inc_ept[], double new_ept[],
1415             double old_rot[], double inc_rot[], double new_rot[] );
1416 void      set_deften_u_rot( double deften[], double u[], double rot[] );
1417 void      set_environment( void );
1418 void      set_stress( long int element, long int gr,
1419             long int plasti_on_boundary, double coord_ip[],
1420             double old_unknowns[], double new_unknowns[],
1421 			      double old_grad_old_unknowns[], double new_grad_new_unknowns[],
1422             double rotated_old_sig[], double new_sig[],
1423             double rotated_old_msig[], double new_msig[],
1424             double inc_ept[], double new_ept[],
1425 			      double old_epe[], double inc_epe[],
1426             double old_epp[], double inc_epp[],
1427             double old_rho[], double new_rho[],
1428             double old_epi[], double new_epi[],
1429             double old_hisv[], double new_hisv[],
1430             double old_damage, double &new_damage,
1431             double old_kappa, double &new_kappa,
1432             double &new_f, double &new_substeps, double old_deften[], double new_deften[],
1433             double inc_rot[], double ddsdde[],
1434             double &viscosity, double &viscosity_heat_generation,
1435 	    double &softvar_nonl, double &softvar_l );
1436 long int  set_swit( long int element, long int inod, const char *routine
1437  );
1438 void      slide( void );
1439 void      solve( long int task );
1440 long int  solve_direct_symmetric_factor( long int n, double *a,
1441             long int band, long int *p, long int *f );
1442 long int  solve_direct_symmetric_substi( long int n, double *a,
1443             long int band, long int *p, long int *f );
1444 long int  solve_iterative_bicg( void );
1445 void      solve_iterative_bicg_sys( double *Ad1, double *Ad2, double *p_tmp, double *residue );
1446 void      solve_iterative_bicg_element( long int element, long int ithread );
1447 void      sort( double val[], double vec[] );
1448 void      spring( long int element, long int name, long int element_group,
1449             double coord[], double old_dof[], double new_dof[],
1450             double element_lhside[], double element_matrix[],
1451             double element_rhside[] );
1452 long int  stress_indx( long int idim, long int jdim );
1453 void      stress_umat( long int element, long int gr, long int formulation,
1454             long int nuser_data, double user_data[], double coord_ip[],
1455             double old_hisv[], double new_hisv[],
1456             double old_unknowns[], double new_unknowns[],
1457             double inc_ept[], double new_ept[],
1458             double rotated_old_sig[], double new_sig[],
1459             double old_deften[], double new_deften[],
1460             double inc_rot[], double ddsdde[] );
1461 void      string_convert_to_lower_case( char str[] );
1462 long int  string_isdouble( char str[] );
1463 long int  string_isinteger( char str[] );
1464 void      string_replace( char str[], char from, char to );
1465 void      string_reverse( char str[] );
1466 void      string_shorten( char str[], long int length );
1467 long int  table_xy( double table[], const char* table_name,
1468             long int length, double x, double &y );
1469 long int  table_xyz( double table[], long int number[2], double coord[], double &z );
1470 void      tendon_distribute();
1471 void      tendons( long int element, long int gr, long int nnol,
1472             long int npoint, double volume,
1473             double new_d[], double old_unknowns[], double new_unknowns[],
1474             double new_rot[], double inc_ept[], double tendon_element_rhside[],
1475             double ddsdde_tendon[] );
1476 double    tetrahedron_volume( double c0[], double c1[],
1477             double c2[], double c3[] );
1478 void      top( void );
1479 double    triangle_area( double c0[], double c1[], double c2[] );
1480 void      truss( long int element, long int element_group,
1481             double coord[], double old_dof[], double new_dof[],
1482             double element_lhside[], double element_matrix[],
1483             double element_rhside[] );
1484 void      unknown_freeze( void );
1485 void      unknown_reset( void );
1486 void      user_bounda_time( long int index, double time_current,
1487             double &load );
1488 void      user_change_dataitem_time( long int index,
1489             double time_current, double &val );
1490 void      user_change_geometry_time( long int index,
1491             double time_current, double &val );
1492 void      user_plasti( long int task, double user_data[],
1493             double new_unknowns[], double old_hisv[],
1494             double new_hisv[], double sig[], double &f );
1495 void      user_sigma( double user_data[], double new_unknowns[],
1496             double inc_epe[], double old_hisv[], double new_hisv[],
1497             double old_sig[], double new_sig[],
1498             double Cuser[MDIM][MDIM][MDIM][MDIM] );
1499 void      user_viscosity( double user_data[], double new_unknowns[],
1500             double &visc );
1501 void      visco_elasticity( long int element, long int group, long int formulation,
1502             double new_unknowns[], double inc_epe[], double rotated_old_msig[],
1503             double new_sig[], double new_msig[], double memmat[MDIM][MDIM] );
1504 void      visco_elastiticity_nonlinear( long int m, long int gr, long int element,
1505             double new_unknowns[], double new_sig[], double new_msig[],
1506             double em, double tm );
1507 void      viscous_stress( long int element, long int gr, double user_data[],
1508             double unknowns[], double grad_unknowns[],
1509             double sig[], double &viscosity,
1510             double &viscosity_heat_generation );
1511 void      volume_factor( long int element_group, double coord[], double &volfac );
1512 void      wave( long int element, long int gr, long int nnol,
1513             double h[], double d[], double volume, double new_unknowns[],
1514             double grad_new_unknowns[], double element_lhside[], double element_matrix[],
1515             double element_rhside[], double element_residue[] );
1516