Files
MultiPhysicsVault/.raw/AbaqusAnalysisUserGuide2/AbaqusAnalysisUserGuide2_145.md
T
김경종 b7f84e1c0f
Tests / Hermetic test suite (push) Has been cancelled
Tests / Skill frontmatter validation (push) Has been cancelled
add documents
2026-05-29 15:59:56 +09:00

23 KiB
Raw Blame History

For subroutine VUINTERACTION:

*SURFACE INTERACTION, USER=INTERACTION, DEPVAR=number of variables

For subroutine VWAVE:

*WAVE, TYPE=USER, DEPVAR=number of variables

Abaqus/CAE Usage:

For most subroutines the number of such variables required at the points or nodes is entered as part of the material definition for every material in which solution-dependent state variables are to be considered:

Property module: material editor: General→Depvar: Number of solution-dependent state variables

Defining initial values

You can define the initial values of solution-dependent state variable fields directly or in Abaqus/Standard through a user subroutine. The initial values of solution-dependent state variables for contact or for user subroutine VWAVE in Abaqus/Explicit are assigned as zero internally.

Defining initial values directly

You can define the initial values in a tabular format for elements and/or element sets. See “Initial conditions in Abaqus/Standard and Abaqus/Explicit,” Section 34.2.1, for additional details.

Input File Usage: *INITIAL CONDITIONS, TYPE=SOLUTION

Defining initial values in a user subroutine in Abaqus/Standard

For complicated cases in Abaqus/Standard you can call user subroutine SDVINI so that dependencies on coordinates, element numbers, etc. can be used in the definition of the variable field.

Input File Usage: *INITIAL CONDITIONS, TYPE=SOLUTION, USER

Element deletion controlled by solution-dependent state variables

If element deletion controlled by state variables is defined in an analysis (see “User-defined mechanical material behavior,” Section 26.7.1), the value of the state variable that is controlling the deletion flag can be modified by any of the user subroutines in which state variables are used, provided that the user subroutine is called at a material point.

Output

User-defined, solution-dependent state variables can be written to the data (.dat) file, the output database (.odb) file, and the results (.fil) file; the output identifiers SDV and SDVn are available as element integration variables (see “Abaqus/Standard output variable identifiers,” Section 4.2.1, and “Abaqus/Explicit output variable identifiers,” Section 4.2.2). Output of these variables is not available for user subroutines VFRIC, VUINTER, VFRICTION, VUINTERACTION, and VWAVE.

Alphanumeric data

Alphanumeric data, such as labels (names) of surfaces or materials, are always passed into user subroutines in the upper case. As a result, direct comparison of these labels with corresponding lower-case characters will fail. Upper case must be used for all such comparisons. An example of such a comparison can be found in “UMAT,” Section 1.1.44 of the Abaqus User Subroutines Reference Guide. It illustrates the code setup inside user subroutine UMAT when more than one user-defined material model needs to be defined. The variable CMNAME is compared against MAT1 and MAT2 (even in situations where the material names may have been defined as mat1 and mat2, respectively.)

Precision in Abaqus/Explicit

Abaqus/Explicit is installed with both single precision and double precision executables. To use the double precision executable, you must specify double precision when you run the analysis (see “Abaqus/Standard, Abaqus/Explicit, and Abaqus/CFD execution,” Section 3.2.2). All variables in the user subroutines that start with the letters a to h and o to z will automatically be defined in the precision of the executable that you run. The precision of the executable is defined in the vaba_param.inc file, and it is not necessary to define the precision of the variables explicitly.

Vectorization in Abaqus/Explicit

Abaqus/Explicit user subroutines are written with a vector interface, which means that blocks of data are passed to the user subroutines. For example, the vectorized user material routines (VFABRIC and VUMAT) are passed stresses, strains, state variables, etc. for nblock material points. One of the parameters defined by vaba_param.inc is maxblk, the maximum block size. If the user subroutine requires the dimensioning of temporary arrays, they can be dimensioned by maxblk.

Parallelization

User subroutines can be used when running jobs in parallel. In thread-parallel mode access to common blocks, common files, and other shared resources need to be guarded against race conditions. Special utility routines are provided for that purpose. For details, see “Ensuring thread safety,” Section 2.1.22 of the Abaqus User Subroutines Reference Guide. An environment variable ABA_PARALLEL_DEBUG can be set to increase verbosity and help troubleshoot problems should they arise in parallel runs.

User subroutine calls

Most of the user subroutines available in Abaqus are called at least once for each increment during an analysis step. However, as discussed below, many subroutines are called more or less often.

Subroutines that define material, element, or interface behavior

Most user subroutines that are used to define material, element, or interface behavior are called twice per material point, element, or slave surface node in the first iteration of every increment such that the models initial stiffness matrix can be formulated appropriately for the step procedure chosen. The subroutines

are called only once per material point, element, or slave surface node in each succeeding iteration within the increment.

By default, in transient implicit dynamic analyses (“Implicit dynamic analysis using direct integration,” Section 6.3.2) Abaqus/Standard calculates accelerations at the beginning of each dynamic step. Abaqus/Standard must call user subroutines that are used to define material, element, or interface behavior two extra times for each material point, element, or slave surface node prior to the zero increment. The extra calls to the user subroutines are not made if the initial acceleration calculations are suppressed. If the half-increment residual tolerances are being checked in a transient implicit dynamic step, Abaqus/Standard must call these user subroutines (except UVARM) one extra time for each material point, element, or slave surface node at the end of each increment. If the calculation of the half-increment residual is suppressed, the extra call to the user subroutines is not made.

User subroutines UHARD, UHYPEL, UHYPER, and UMULLINS, when used in plane stress analyses, are called more often.

Subroutines that define initial conditions or orientations

User subroutines that are used to define initial conditions or orientations are called before the first iteration of the first steps initial increment within an analysis.

Subroutines that define predefined fields

User subroutines that are used to define predefined fields are called prior to the first iteration of the relevant steps first increment for all iterations of all increments whenever the current field variable is needed.

Verification of subroutine calls

If there is any doubt as to how often a user subroutine is called, this information can be obtained upon testing the subroutine on a small example, as suggested earlier. The current step and increment numbers are commonly passed into these subroutines, and they can be printed out as debug output (also discussed earlier). The iteration number for which the subroutine is called may not be passed into the user subroutine; however, if printed output is sent from the subroutine to the message (.msg) file (“Output,” Section 4.1.1), the location of the output within this file will give the iteration number, provided that the output to the message file is written at every increment.

Utility routines

A variety of utility routines are available to assist in the coding of user subroutines. You include the utility routine inside a user subroutine. When called, the utility routine will perform a predefined function or action whose output or results can be integrated into the user subroutine. Some utility routines are only applicable to particular user subroutines. Each utility routine is discussed in detail in “Utility routines,” Section 2.1 of the Abaqus User Subroutines Reference Guide.

Variables provided for use in utility routines

The following utility routines require the use of Abaqus-provided variables passed into the user subroutines from which they are called:

• GETNODETOELEMCONN
• GETVRM
• GETVRMAVGATNODE
• GETVRN
• IGETSENSORID
• IVGETSENSORID
• MATERIAL_LIB_MECH
• MATERIAL_LIB_HT

These variables will be defined properly when passed into your user subroutine; you cannot modify the variables or create alternative variables for use in the utility routines.

For example, the GETVRM utility routine requires the variable JMAC, which is passed from Abaqus/Standard into user subroutine UVARM and other user subroutines for which GETVRM is a supported utility. The variable JMAC represents an Abaqus data structure that requires no further manipulation on your part. If you use the GETVRM utility routine from within user subroutine UVARM, you will pass the JMAC variable from UVARM into GETVRM.

18.1.2 AVAILABLE USER SUBROUTINES

Products: Abaqus/Standard Abaqus/Explicit Abaqus/CFD Abaqus/Aqua

References

• “User subroutines: overview,” Section 18.1.1
• Abaqus User Subroutines Reference Guide

Overview

User subroutines allow advanced users to customize a wide variety of Abaqus capabilities. Information on writing user subroutines and detailed descriptions of each subroutine appear online in the Abaqus User Subroutines Reference Guide. A listing and explanations of associated utility routines also appear in that guide.

Available user subroutines for Abaqus/Standard

The available user subroutines for Abaqus/Standard are as follows:

• CREEP: Define time-dependent, viscoplastic behavior (creep and swelling).
• DFLOW: Define nonuniform pore fluid velocity in a consolidation analysis.
• DFLUX: Define nonuniform distributed flux in a heat transfer or mass diffusion analysis.
• DISP: Specify prescribed boundary conditions.
• DLOAD: Specify nonuniform distributed loads.
• FILM: Define nonuniform film coefficient and associated sink temperatures for heat transfer analysis.
• FLOW: Define nonuniform seepage coefficient and associated sink pore pressure for consolidation analysis.
• FRIC: Define frictional behavior for contact surfaces.
• FRIC_COEF: Define frictional coefficient for contact surfaces.
• GAPCON: Define conductance between contact surfaces or nodes in a fully coupled temperaturedisplacement analysis, a fully coupled thermal-electrical-structural analysis, or a pure heat transfer analysis.
• GAPELECTR: Define electrical conductance between surfaces in a coupled thermal-electric analysis or a fully coupled thermal-electrical-structural analysis.
• HARDINI: Define initial equivalent plastic strain and initial backstress tensor.
• HETVAL: Provide internal heat generation in heat transfer analysis.
• MPC: Define multi-point constraints.

• ORIENT: Provide an orientation for defining local material directions or local directions for kinematic coupling constraints or local rigid body directions for inertia relief.
• RSURFU: Define a rigid surface.
• SDVINI: Define initial solution-dependent state variable fields.
• SIGINI: Define an initial stress field.
• UAMP: Specify amplitudes.
• UANISOHYPER_INV: Define anisotropic hyperelastic material behavior using the invariant formulation.
• UANISOHYPER_STRAIN: Define anisotropic hyperelastic material behavior based on Green strain.
• UCORR: Define cross-correlation properties for random response loading.
• UCREEPNETWORK: Define time-dependent behavior (creep) for models defined within the parallel rheological framework.
• UDECURRENT: Define nonuniform volume current density in an eddy current or magnetostatic analysis.
• UDEMPOTENTIAL: Define nonuniform magnetic vector potential on a surface in an eddy current or magnetostatic analysis.
• UDMGINI: Define the damage initiation criterion.
• UDSECURRENT: Define nonuniform surface current density in an eddy current or magnetostatic analysis.
• UEL: Define an element.
• UELMAT: Define an element with access to Abaqus materials.
• UEXPAN: Define incremental thermal strains.
• UEXTERNALDB: Manage user-defined external databases and calculate model-independent history information.
• UFIELD: Specify predefined field variables.
• UFLUID: Define fluid density and fluid compliance for hydrostatic fluid elements.
• UFLUIDCONNECTORLOSS: Define the connector loss for fluid pipe connector elements.
• UFLUIDCONNECTORVALVE: Define the valve opening to control flow in fluid pipe connector elements.
• UFLUIDLEAKOFF: Define the fluid leak-off coefficients for pore pressure cohesive elements.
• UFLUIDPIPEFRICTION: Define the friction coefficient for fluid pipe elements.
• UGENS: Define the mechanical behavior of a shell section.
• UHARD: Define the yield surface size and hardening parameters for isotropic plasticity or combined hardening models.
• UHYPEL: Define a hypoelastic stress-strain relation.
• UHYPER: Define a hyperelastic material.
• UINTER: Define surface interaction behavior for contact surfaces.

• UMASFL: Specify prescribed mass flow rate conditions for a convection/diffusion heat transfer analysis.
• UMAT: Define a materials mechanical behavior.
• UMATHT: Define a materials thermal behavior.
• UMESHMOTION: Specify mesh motion constraints during adaptive meshing.
• UMOTION: Specify motions during cavity radiation heat transfer analysis or steady-state transport analysis.
• UMULLINS: Define damage variable for the Mullins effect material model.
• UPOREP: Define initial fluid pore pressure.
• UPRESS: Specify prescribed equivalent pressure stress conditions.
• UPSD: Define the frequency dependence for random response loading.
• URDFIL: Read the results file.
• USDFLD: Redefine field variables at a material point.
• UTEMP: Specify prescribed temperatures.
• UTRACLOAD: Specify nonuniform traction loads.
• UTRS: Define a reduced time shift function for a viscoelastic material.
• UTRSNETWORK: Define a reduced time shift function for models defined within the parallel rheological framework.
• UVARM: Generate element output.
• UWAVE: Define wave kinematics for an Abaqus/Aqua analysis.
• UXFEMNONLOCALWEIGHT: Define the weight function used to compute the average stress/strain to determine the crack propagation direction.
• VOIDRI: Define initial void ratios.

Available user subroutines for Abaqus/Explicit

The available user subroutines for Abaqus/Explicit are as follows:

• VDFLUX: User subroutine to specify nonuniform distributed fluxes in an explicit dynamic coupled temperature-displacement analysis.
• VDISP: Specify prescribed boundary conditions.
• VDLOAD: Specify nonuniform distributed loads.
• VEXTERNALDB: Control analyses to exchange data among Abaqus user subroutines and external programs or files.
• VFABRIC: Define fabric material behavior.
• VFRIC: Define contact frictional behavior between surfaces defined with the contact pair algorithm.
• VFRIC_COEF: Define contact frictional coefficient between surfaces defined with the general contact algorithm.

• VFRICTION: Define contact frictional behavior between surfaces defined with the general contact algorithm.
• VUAMP: Specify amplitudes.
• VUANISOHYPER_INV: Define anisotropic hyperelastic material behavior using the invariant formulation.
• VUANISOHYPER_STRAIN: Define anisotropic hyperelastic material behavior based on Green strain.
• VUCHARLENGTH: Define characteristic element length at a material point.
• VUCREEPNETWORK: Define time-dependent behavior (creep) for models defined within the parallel rheological framework.
• VUEL: Define an element.
• VUEOS: Define equation of a state material model.
• VUFIELD: Specify predefined field variables.
• VUFLUIDEXCH: Define mass/heat energy flow rates for fluid exchange.
• VUFLUIDEXCHEFFAREA: Define effective area for fluid exchange.
• VUHARD: Define the yield surface size and hardening parameters for isotropic plasticity or combined hardening models.
• VUINTER: Define the contact interaction between surfaces defined with the contact pair algorithm.
• VUINTERACTION: Define the contact interaction between surfaces defined with the general contact algorithm.
• VUMAT: Define material behavior.
• VUMULLINS: Define damage variable for the Mullins effect material model.
• VUSDFLD: Redefine field variables at a material point.
• VUTRS: Define a reduced time shift function for a viscoelastic material.
• VUVISCOSITY: Define the shear viscosity for equation of state models.
• VWAVE: Define wave kinematics for an Abaqus/Aqua analysis.

Available user subroutines for Abaqus/CFD

The available user subroutines for Abaqus/CFD are as follows:

• SMACfdUserPressureBC: Specify prescribed pressure boundary conditions.
• SMACfdUserVelocityBC: Specify prescribed velocity boundary conditions.

18.1.3 AVAILABLE UTILITY ROUTINES

Products: Abaqus/Standard Abaqus/Explicit Abaqus/Aqua

References

• “User subroutines: overview,” Section 18.1.1
• “Utility routines,” Section 2.1 of the Abaqus User Subroutines Reference Guide

Overview

A variety of utility routines are available to assist in the coding of user subroutines. When called, the utility routine will perform a predefined function or action whose output or results can be integrated into the user subroutine.

Available utility routines

The following utility routines are available for use in coding user subroutines in Abaqus:

GETENVVAR or VGETENVVAR can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the value of an environment variable (“Obtaining Abaqus environment variables,” Section 2.1.1 of the Abaqus User Subroutines Reference Guide).
• GETJOBNAME or VGETJOBNAME can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the name of the current analysis job (“Obtaining the Abaqus job name,” Section 2.1.2 of the Abaqus User Subroutines Reference Guide).
• GETOUTDIR or VGETOUTDIR can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to obtain the name of the directory where analysis job output is being placed (“Obtaining the Abaqus output directory name,” Section 2.1.3 of the Abaqus User Subroutines Reference Guide).
• GETNUMCPUS can be called from any Abaqus/Standard user subroutine to obtain the number of MPI processes; VGETNUMCPUS can be called from any Abaqus/Explicit user subroutine in a domain-parallel run to obtain the number of processes used for the parallel run (“Obtaining parallel processes information,” Section 2.1.4 of the Abaqus User Subroutines Reference Guide).
• GETRANK can be called from any Abaqus/Standard user subroutine to obtain the rank of the MPI process from which the function is called; VGETRANK can be called from any Abaqus/Explicit user subroutine in a domain-parallel run to obtain the individual process rank (“Obtaining parallel processes information,” Section 2.1.4 of the Abaqus User Subroutines Reference Guide).
• get_thread_id can be called from any Abaqus user subroutine to retrieve the ID that Abaqus assigned to that thread (“Obtaining parallel processes information,” Section 2.1.4 of the Abaqus User Subroutines Reference Guide).
• GETPARTINFO or VGETPARTINFO can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to retrieve the part instance name and local node or element number

corresponding to an internal node or element number. GETINTERNAL or VGETINTERNAL can be called from any Abaqus/Standard or Abaqus/Explicit user subroutine, respectively, to retrieve the internal node or element number corresponding to a given part instance name and local number (“Obtaining part information,” Section 2.1.5 of the Abaqus User Subroutines Reference Guide.)

• GETVRM provides access to material point information for Abaqus/Standard user subroutines UVARM, UDMGINI, or USDFLD (“Obtaining material point information in an Abaqus/Standard analysis,” Section 2.1.6 of the Abaqus User Subroutines Reference Guide).
• VGETVRM provides access to selected output variables at material points for Abaqus/Explicit user subroutine VUSDFLD (“Obtaining material point information in an Abaqus/Explicit analysis,” Section 2.1.7 of the Abaqus User Subroutines Reference Guide).
• GETVRMAVGATNODE provides access to material point information, extrapolated to and averaged at a node, for Abaqus/Standard user subroutine UMESHMOTION (“Obtaining material point information averaged at a node,” Section 2.1.8 of the Abaqus User Subroutines Reference Guide).
• GETVRN provides access to node point information for Abaqus/Standard user subroutine UMESHMOTION (“Obtaining node point information,” Section 2.1.9 of the Abaqus User Subroutines Reference Guide).
• GETNODETOELEMCONN can be called from user subroutine UMESHMOTION to retrieve a list of elements connected to a specific node. This element list can then be used with utility routine GETVRMAVGATNODE (“Obtaining node to element connectivity,” Section 2.1.10 of the Abaqus User Subroutines Reference Guide).
• SINV determines the first and second stress invariants for a given stress tensor in Abaqus/Standard (“Obtaining stress invariants, principal stress/strain values and directions, and rotating tensors in an Abaqus/Standard analysis,” Section 2.1.11 of the Abaqus User Subroutines Reference Guide).
• SPRINC or VSPRINC determines the principal values for a given stress or strain tensor in Abaqus/Standard or Abaqus/Explicit, respectively (“Obtaining stress invariants, principal stress/strain values and directions, and rotating tensors in an Abaqus/Standard analysis,” Section 2.1.11 of the Abaqus User Subroutines Reference Guide, and “Obtaining principal stress/strain values and directions in an Abaqus/Explicit analysis,” Section 2.1.12 of the Abaqus User Subroutines Reference Guide).
• SPRIND or VSPRIND determines both the principal values and principal directions for a given stress or strain tensor in Abaqus/Standard or Abaqus/Explicit, respectively (“Obtaining stress invariants, principal stress/strain values and directions, and rotating tensors in an Abaqus/Standard analysis,” Section 2.1.11 of the Abaqus User Subroutines Reference Guide, and “Obtaining principal stress/strain values and directions in an Abaqus/Explicit analysis,” Section 2.1.12 of the Abaqus User Subroutines Reference Guide).
• ROTSIG can be called from Abaqus/Standard user subroutine UMAT to perform the rotation of tensors when large-strain calculations are performed (“Obtaining stress invariants, principal stress/strain values and directions, and rotating tensors in an Abaqus/Standard analysis,” Section 2.1.11 of the Abaqus User Subroutines Reference Guide).