Professional Documents
Culture Documents
Lecture 1
Introduction
Overview
• Overview of Some User Subroutines
• Where User Subroutines Fit into ABAQUS/Standard
• Including User Subroutines in a Model
• Writing Output from User Subroutines
• Compiling and Linking User Subroutines
• Debugging Techniques and Proper Programming Habits
Beginning of Analysis
UEXTERNALDB
Define Initial Conditions UPOREP
Start of Step
Start of Increment
UEXTERNALDB
Start of Iteration
To Start of
To Start of Iteration To Start of
Increment Step
el α
Solve K c = R
Converged? No
Write Output
UEXTERNALDB
URDFIL
End of Step?
No Yes
Start of Increment
UMAT
∂∆σ UGENS: ∂N ⁄ ∂E
USDFLD Calculate σ , ----------
∂∆ε
FILM dh ⁄ d θ ,
Define Loads ∂P ⁄ ∂ x DLOAD,
HETVAL ∂r ⁄ ∂θ ,
UWAVE
Figure 1–2. A More Detailed Flow of ABAQUS/Standard
Naming Conventions
• If user subroutines call other subroutines or use COMMON blocks to
pass information, such subroutines or COMMON blocks should begin
with the letter K since this letter is never used to start the name of any
subroutine or COMMON block in ABAQUS.
Subroutine Argument Lists
• The variables passed into a user subroutine via the argument list are
classified as either variables to be defined, variables that can be defined,
or variables passed in for information.
• The user must not alter the values of the “variables passed in for
information.”
– Doing so will have unpredictable results.
• There are two methods available for defining the initial values of
solution-dependent variables.
– The ∗INITIAL CONDITIONS, TYPE=SOLUTION option can be
used to define the variable field in a tabular format
– For complicated cases user subroutine SDVINI can be used to
define the initial values of the SDVs. Invoke this subroutine by
adding the USER parameter to the ∗INITIAL CONDITIONS,
TYPE=SOLUTION option.
Testing Suggestions
• Always develop and test user subroutines on the smallest possible
model.
• Do not include other complicated features, such as contact, unless they
are absolutely necessary when testing the subroutine.
• Test the most basic model of the user subroutine before adding
additional complexity to the subroutine.
– Whenever a “new” feature is added to the model in a user
subroutine, test it before adding an additional feature.
• When appropriate, try to test the user subroutine in models where only
values of the nodal degrees of freedom (displacement, rotations,
temperature) are specified. Then test the subroutine in models where
fluxes and nodal degrees of freedom are specified.
• Ensure that arrays passed into a user subroutine with a given dimension
are not used as if they had a larger dimension.
– For example, if a user subroutine is written such that the number of
SDVs is 10 but only 8 SDVs are specified on the ∗DEPVAR
option, the user subroutine will overwrite data stored by ABAQUS;
the consequences of this accident will be unpredictable.