Product: Abaqus/Explicit
User subroutine VUFIELD:
allows you to prescribe predefined field variables at the nodes of a model—the predefined field variables at a node can be updated individually, or a number of field variables at the nodes can be updated simultaneously;
can be called for blocks of nodes for which the field variable values are defined in the subroutine;
ignores any field variable values specified directly;
can be used to modify field variable values read from a results file; and
can be used in conjunction with user subroutine VUSDFLD such that the field variables that are passed in from VUFIELD and interpolated to the material points can be modified (such changes are local to material point values, and nodal field variable values remain unaffected).
Two different methods are provided for updating field variables.
By default, only one field variable is updated at a time for given nodes or a given node set in user subroutine VUFIELD. The user subroutine is called whenever a current value of a field variable is needed for the nodes that are listed in the field variable definition. This method is ideal for cases in which the field variables are independent of each other.
User subroutine VUFIELD can also be used to update multiple field variables simultaneously for given nodes or a given node set. This method is well-suited for cases in which there are dependencies between some of the field variables. In this case you must specify the number of field variables to be updated simultaneously, and the user subroutine will be called each time the field variable values are needed.
SUBROUTINE VUFIELD(FIELD, NBLOCK, NFIELD, KFIELD, NCOMP, 1 KSTEP, KINC, JNODEID, TIME, 2 COORDS, U, V, A) C INCLUDE 'VABA_PARAM.INC' C indices for the time array TIME PARAMETER( i_ufld_Current = 1, * i_ufld_Increment = 2, * i_ufld_Period = 3, * i_ufld_Total = 4 ) C indices for the coordinate array COORDS PARAMETER( i_ufld_CoordX = 1, * i_ufld_CoordY = 2, * i_ufld_CoordZ = 3 ) C indices for the displacement array U PARAMETER( i_ufld_SpaDisplX = 1, * i_ufld_SpaDisplY = 2, * i_ufld_SpaDisplZ = 3, * i_ufld_RotDisplX = 4, * i_ufld_RotDisplY = 5, * i_ufld_RotDisplZ = 6, * i_ufld_AcoPress = 7, * i_ufld_Temp = 8 ) C indices for the velocity array V PARAMETER( i_ufld_SpaVelX = 1, * i_ufld_SpaVelY = 2, * i_ufld_SpaVelZ = 3, * i_ufld_RotVelX = 4, * i_ufld_RotVelY = 5, * i_ufld_RotVelZ = 6, * i_ufld_DAcoPress = 7, * i_ufld_DTemp = 8 ) C indices for the acceleration array A PARAMETER( i_ufld_SpaAccelX = 1, * i_ufld_SpaAccelY = 2, * i_ufld_SpaAccelZ = 3, * i_ufld_RotAccelX = 4, * i_ufld_RotAccelY = 5, * i_ufld_RotAccelZ = 6, * i_ufld_DDAcoPress = 7, * i_ufld_DDTemp = 8 ) C DIMENSION FIELD(NBLOCK,NCOMP,NFIELD) DIMENSION JNODEID(NBLOCK), TIME(4), COORDS(3,NBLOCK) DIMENSION U(8,NBLOCK), V(8,NBLOCK), A(8,NBLOCK) C user coding to define FIELD RETURN END
FIELD(NBLOCK,NCOMP,NFIELD)
Array of field variable values at a collective number of nodes NBLOCK (see NBLOCK below). When updating one field variable at a time, only the value of the specified field variable KFIELD must be returned. In this case NFIELD is passed into user subroutine VUFIELD with a value of 1, and FIELD is thus dimensioned as FIELD(NBLOCK,NCOMP,1). When updating all field variables simultaneously, the values of the specified number of field variables must be returned. In this case FIELD is dimensioned as FIELD(NBLOCK,NCOMP,NFIELD), where NFIELD is the number of field variables specified and KFIELD, which is set to 1, has no meaning.
If fields are applied to nodes that are not part of beam or shell elements, only one value of each field variable is required (NCOMP=1). Otherwise, the number of values to be returned depends on the mode of temperature and field variable input selected for the beam or shell section.
Because field variables can also be defined directly, it is important to understand the hierarchy used in situations with conflicting information (see “Predefined fields,” Section 29.6.1 of the Abaqus Analysis User's Manual).
When the array FIELD is passed into user subroutine VUFIELD, it will contain either the field variable values from the previous increment or those values obtained from the results file if this method was used. You can then modify these values within this subroutine.
NBLOCK
User-specified number of nodes to be processed in this call to VUFIELD. The value is equal to the total number of nodes given in a node set when the optional parameter BLOCKING on the *FIELD option is omitted or is set to NO. When the parameter BLOCKING is set to YES, NBLOCK is equal to a predefined number set in Abaqus/Explicit. You can also modify NBLOCK by setting any desirable value through BLOCKING=n.
NFIELD
User-specified number of field variables to be updated. The default value is 1.
KFIELD
User-specified field variable number. This variable is meaningful only when updating individual field variables at a time; otherwise, the value is set to 1.
NCOMP
Maximum number of section values required for any node in the model. When fields are applied to nodes that are part of beam or shell elements, VUFIELD is invoked in two passes: the first pass with NCOMP passed in with the value of 1, and the second pass with NCOMP passed in with the value equal to the total number of section points minus 1.
KSTEP
Current step number.
KINC
Increment number for step KSTEP.
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. You can perform additional interdependent field variable operations by using nodal indexes stored in this array.
TIME(4)
Array for information of analysis time. You can retrieve any time information from this array by using the parameters given above. TIME(i_ufld_Current) stores the current analysis time, TIME(i_ufld_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. You can use this time information to perform possible time-dependent field variable operations.
COORDS(3,NBLOCK)
Coordinates for nodes in the array JNODEUID. This array stores 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. You can make use of COORDS to define possible position-dependent field variable operations.
U(8,NBLOCK), V(8,NBLOCK), and A(8,NBLOCK)
Arrays containing solution variables of displacements, rotations, temperatures, 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 indexes given above. Depending on the degrees of freedom, some solution variables are not valid for a given node.