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