User Subroutine Interface
SUBROUTINE VUTEMP(TEMP, NBLOCK, NCOMP, NFIELD,
1 KSTEP, JFLAGS, JNODEUID, TIME, FIELD,
2 COORDS, U, V, A)
C
INCLUDE 'VABA_PARAM.INC'
C indices for the time array TIME
PARAMETER( i_utmp_Current = 1,
* i_utmp_Increment = 2,
* i_utmp_Period = 3,
* i_utmp_Total = 4,
* n_utmp_Time = 4 )
C indices for the coordinate array COORDS
PARAMETER( i_utmp_CoordX = 1,
* i_utmp_CoordY = 2,
* i_utmp_CoordZ = 3 )
C indices for the displacement array U
PARAMETER( i_utmp_SpaDisplX = 1,
* i_utmp_SpaDisplY = 2,
* i_utmp_SpaDisplZ = 3,
* i_utmp_RotDisplX = 4,
* i_utmp_RotDisplY = 5,
* i_utmp_RotDisplZ = 6,
* i_utmp_AcoPress = 7,
* n_utmp_SolU = 7 )
C indices for the velocity array V
PARAMETER( i_utmp_SpaVelX = 1,
* i_utmp_SpaVelY = 2,
* i_utmp_SpaVelZ = 3,
* i_utmp_RotVelX = 4,
* i_utmp_RotVelY = 5,
* i_utmp_RotVelZ = 6,
* i_utmp_DAcoPress = 7,
* n_utmp_SolV = 7 )
C indices for the acceleration array A
PARAMETER( i_utmp_SpaAccelX = 1,
* i_utmp_SpaAccelY = 2,
* i_utmp_SpaAccelZ = 3,
* i_utmp_RotAccelX = 4,
* i_utmp_RotAccelY = 5,
* i_utmp_RotAccelZ = 6,
* i_utmp_DDAcoPress = 7,
* n_utmp_SolA = 7 )
C indices for JFLAGS
PARAMETER( i_utmp_kInc = 1,
* i_utmp_kPass = 2,
* n_utmp_Flags = 2 )
C
DIMENSION TEMP(NBLOCK,NCOMP)
DIMENSION FIELD(NBLOCK,NCOMP,NFIELD)
DIMENSION JFLAGS(n_utmp_Flags), JNODEUID(NBLOCK), TIME(n_utmp_Time),
* COORDS(3,NBLOCK)
DIMENSION U(n_utmp_SolU,NBLOCK), V(n_utmp_SolV,NBLOCK), A(n_utmp_SolA,NBLOCK)
C
user coding to define TEMP
RETURN
END
Variables to Be Defined
-
TEMP(NBLOCK,NCOMP)
-
Array of temperature values at a collective number of nodes
NBLOCK (see
NBLOCK below).
For temperatures applied to nodes that are not part of pipe,
beam, or shell elements, only one value of temperature is
required (NCOMP=1), and the
user subroutine is invoked in a single pass. For nodes
that are part of pipe, beam, or shell elements, VUTEMP
is invoked in two passes per increment for these elements,
and the number of values to be returned depends on the
mode of temperature input selected for the beam or shell
section. The following cases are possible:
-
Temperatures are given as values at the points on
the shell or beam section. For a beam section, the
number of values required is determined by the
particular section type specified, as described in
Beam Cross-Section Library. For a shell section,
temperatures and field variables are given as
values at n equally
spaced points through each layer of a shell
section. In the first pass
NCOMP is passed in
with the value of 1 to define the temperature
values at the first point. The second pass is used
to define temperatures at the remaining
points.
-
Temperatures for the shell or beam section are
given as values at the origin of the cross-section
together with gradients along the cross-section.
The number of gradient values required is 2 for
three-dimensional beams, 1 for two-dimensional
beams, and 1 for shells. In the first pass
NCOMP is passed in
with the value of 1 to define the field variable
values at the origin of the cross-section. The
gradients are defined in the second pass.
Because temperatures can also be defined directly, it is
important to understand the hierarchy used in situations
with conflicting information (see Predefined Fields).
When the array TEMP is passed
into user subroutine VUTEMP,
it will contain the temperatures values from the previous
increment.
Variables Passed in for Information
-
NBLOCK
-
User-specified number of nodes to be processed as a block in
this call to VUTEMP.
The value is equal to the total number of nodes given in a
node set.
-
NCOMP
-
Maximum number of section values to be defined for any node
in the model in the current pass.
NCOMP is passed in with the
value of 1 in the first pass to user subroutine VUTEMP.
-
NFIELD
-
Number of field variables passed in the array
FIELD (see below) .
-
KSTEP
-
Current step number.
-
JFLAGS(i_utmp_kInc)
-
Increment number for step
KSTEP.
-
JFLAGS(i_utmp_kPass)
-
This flag is equal to 1 for the first pass to user subroutine
VUTEMP
and is equal to 2 for the second pass.
-
JNODEUID(NBLOCK)
-
Array for user-defined node numbers. This array is
dimensioned based on the size of
NBLOCK, and the contained
node numbers are identical to those defined in the input
file.
-
TIME(n_utmp_Time)
-
Array for information of analysis time. You can retrieve any
time information from this array by using the parameters
given above.
TIME(i_utmp_Current) stores
the current analysis time,
TIME(i_utmp_Increment)
gives the time increment at this instance,
TIME(i_ufld_Period) is the
time period of the current step, and
TIME(i_ufld_Total) is the
total analysis time up to this point.
-
FIELD(NBLOCK,NCOMP,NFIELD)
-
Array containing the field variables in the analysis.
-
COORDS(3,NBLOCK)
-
Coordinates for nodes in the array
JNODEUID. This array stores
the current coordinates of nodes in which the order of
coordinates stored corresponds to the order of nodes
listed in the array
JNODEUID. The coordinates
can be retrieved by using the parameters given above.
-
U(N_UTMP_SOLU,NBLOCK), V(N_UTMP_SOLV,NBLOCK), and
A(N_UTMP_SOLA,NBLOCK)
-
Arrays containing solution variables of displacements,
rotations, and pressures and their corresponding temporal
derivatives. The order in which these solutions are stored
follows the order defined in the array
JNODEUID. For a specific
node, its solution variables can be retrieved by using the
parameter indices given above. Depending on the degrees of
freedom, some solution variables are not valid for a given
node. The displacement values correspond to the current
increment. However, the acceleration is from a
configuration that is one increment behind, and the
velocity is such that it is consistent with the
displacement increment and the time increment between the
two successive configurations.
|