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