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