User Subroutine Interface
subroutine fric_coef (
C Write only -
* fCoef, fCoefDeriv,
C Read only -
* nBlock, nProps, nTemp, nFields,
* iData, rData,
* surfInt, surfSec, surfMain,
* props, slipData, pressure,
* tempAvg, fieldAvg )
C
include 'aba_param.inc'
C
dimension fCoef(nBlock,2),
* fCoefDeriv(nBlock,20,2),
* props(nProps),
* slipData(nBlock,6),
* pressure(nBlock),
* tempAvg(nBlock),
* fieldAvg(nBlock,nFields)
c
dimension iData(*), rData(*)
c
c Offset parameters to various integer quantities in iData(*)
c
parameter( i_ifc_KStep = 1,
* i_ifc_KInc = 2,
* i_ifc_Kit = 3,
* i_ifc_Node = 4,
* i_ifc_nStateV = 5,
* i_ifc_nFDir = 6)
c
c Offset parameters to various real quantities in rData(*)
c
parameter( i_rfc_TimStep = 1,
* i_rfc_TimGlb = 2,
* i_rfc_DTimCur = 3,
* i_rfc_Drot = 4,
* i_rfc_StateV = 8)
c
c Offset parameters to slip variables in slipData
c
parameter( i_SD_SlipRateMag = 1,
* i_SD_SlipRate1 = 2,
* i_SD_SlipRate2 = 3,
* i_SD_SlipEq = 4,
* i_SD_Slip1 = 5,
* i_SD_Slip2 = 6,
* n_SD_Length = 6)
c
c Offset parameters to derivatives in fCoefDeriv
c
parameter( i_fDer_SlipRateMag = 1,
* i_fDer_Pressure = 2,
* i_fDer_Temperature = 3,
* i_fDer_SlipRate1 = 4,
* i_fDer_SlipRate2 = 5,
* i_fDer_SlipEq = 6,
* i_fDer_Slip1 = 7,
* i_fDer_Slip2 = 8)
C
character*80 surfInt, surfSec, surfMain
c
C
user coding to define fCoef
c
c Pointers to access blocks of data from rData
c e.g., Solution dependent state variables indexed from
c 1 to number of state variables nStateV where
c nStateV = iData(i_ifc_nStateV)
c
pointer (ptrStateVariables,StateVariables)
real*8 StateVariables(*) !indexed 1 to iData(i_ifc_nStateV)
......
c
c Access state variables
c
ptrStateVariables = loc(rData(i_rfc_StateV))
......
c
c Compute fCoef
c
......
return
end
Variables to Be Defined
- fCoef(nBlock,2)
-
For isotropic friction fCoef(1,1) must be
updated to the current value of the friction coefficient at the contact point.
fCoef(1,2) should not be updated.
For anisotropic friction fCoef(1,1) and
fCoef(1,2) must be updated to the current values
of the friction coefficients in the first and second local tangent directions,
respectively.
fCoef(1,1) is initialized to 0.0, and
fCoef(1,2) is initialized to -1.0 before calling
FRIC_COEF. Abaqus/Standard assumes that isotropic friction applies to contact points for which
fCoef(1,2) remains at -1.0 on returning from FRIC_COEF.
- fCoefDeriv(nBlock,20,2)
-
For isotropic friction the entries of
fCoefDeriv(1,*,1) are updated to derivatives of the
friction coefficient. The entries of fCoefDeriv(1,*,2)
should not be updated.
For anisotropic friction the entries of
fCoefDeriv(1,*,1) are updated to derivatives of the
friction coefficient in the first local tangent direction, while the entries of
fCoefDeriv(1,*,2) must be updated to derivatives of
the friction coefficient in the second local tangent direction. See the table below
for the meaning of individual derivatives and their parameterized access to update
them.
Derivative |
Definition |
fCoefDeriv(1,i_fDer_SlipRateMag,k) |
Derivative with respect to slip rate magnitude |
fCoefDeriv(1,i_fDer_Pressure,k) |
Derivative with respect to contact pressure |
fCoefDeriv(1,i_fDer_Temperature,k) |
Derivative with respect to temperature |
fCoefDeriv(1,i_fDer_SlipRate1,k) |
Derivative with respect to slip rate component in the first local
tangent direction |
fCoefDeriv(1,i_fDer_SlipRate2,k) |
Derivative with respect to slip rate component in the second local
tangent direction |
fCoefDeriv(1,i_fDer_SlipEq,k) |
Derivative with respect to equivalent slip accumulated across
increments |
fCoefDeriv(1,i_fDer_Slip1,k) |
Derivative with respect to slip component in the first local tangent
direction |
fCoefDeriv(1,i_fDer_Slip2,k) |
Derivative with respect to slip component in the second local tangent
direction |
Variables That Can Be Updated
- rData(i_rfc_StateV)
- The offset parameter i_rfc_StateV=8. The array of
real values starting from this offset corresponds to the solution-dependent state
variables. You specify the number of available state variables (Allocating Space for Solution-Dependent State Variables). These
state variables are passed in with values at the start of the increment. Update them to
their corresponding values at the end of the increment. See the user subroutine
interface provided earlier for an example of how to access the array of state variables
from the buffer rData.
Variables Passed in for Information
- nBlock
-
Equal to 1.
- nProps
-
User-specified number of property values associated with this friction
model.
- nTemp
-
1 if the temperature is defined, and 0 if the temperature is not defined.
- nFields
-
Number of user-specified field variables.
- iData(i_ifc_KStep)
-
The offset parameter i_ifc_KStep=1, and the integer value at this
offset denotes the step number.
- iData(i_ifc_KInc)
-
The offset parameter i_ifc_KStep=2, and the integer value at this
offset denotes the increment number.
- iData(i_ifc_Kit)
-
The offset parameter i_ifc_Kit=3, and the integer value at this
offset denotes the counter for the element pass calculations; for example, the counter
starts out at 1 before the first equation solver pass, and the counter is reset to 1
after a cutback of an increment.
- iData(i_ifc_Node)
-
The offset parameter i_ifc_Node=4, and the integer value at this
offset denotes the user-defined secondary node label (or an internal node number for
models defined in terms of an assembly of part instances). For the surface-to-surface
formulation, this secondary node corresponds to the predominant secondary node of the
constraint.
- iData(i_ifc_nStateV)
-
The offset parameter i_ifc_nStateV=5, and the integer value at
this offset denotes the number of state variables you have specified. The default
value is 0.
- iData(i_ifc_nFDir)
-
The offset parameter i_ifc_nFDir=6, and the integer value at this
offset denotes the number of friction directions.
- rData(i_rfc_TimStep)
-
The offset parameter i_rfc_TimStep=1, and the real value at this
offset is the step time.
- rData(i_rfc_TimGlb)
-
The offset parameter i_rfc_TimGlb=2, and the real value at this
offset is the total time.
- rData(i_rfc_DTimCur)
-
The offset parameter i_rfc_DTimCur=3, and the real value at this
offset is the current increment size from
to
.
- rData(i_rfc_DRot)
-
The offset parameter i_rfc_DRot=4. The list of four real value
entries starting from this offset corresponds to the column major storage of a 2
× 2 rotation increment matrix. For contact with a three-dimensional rigid
surface, this matrix represents the incremental rotation of the surface directions
relative to the rigid surface. It is provided so that vector- or tensor-valued state
variables can be rotated appropriately in this subroutine. For other cases including
two-dimensional and axisymmetric contact, the rotation increment matrix is the
identity matrix.
- surfInt
-
User-specified surface interaction name, left justified.
-
surfSec
-
Secondary surface name, left justified.
-
surfMain
-
Main surface name, left justified.
- props(nProps)
-
User-specified vector of property values to define the frictional
coefficient at the contact point.
- slipData(nBlock,6)
-
Array containing contact slip variables for the current time increment at the contact point. See
the table below for the meaning of individual variables and their access through
parameterized locations.
Variable |
Definition |
slipData(1,i_SD_SlipRateMag) |
Slip rate magnitude |
slipData(1,i_SD_SlipRate1) |
Slip rate in the first local tangent direction |
slipData(1,i_SD_SlipRate2) |
Slip rate in the second local tangent direction; zero for
two-dimensional problems |
slipData(1,i_SD_SlipEq) |
Equivalent slip distance accumulated across increments |
slipData(1,i_SD_Slip1) |
Slip component in the first local tangent direction |
slipData(1,i_SD_Slip2) |
Slip component in the second local tangent direction; zero for
two-dimensional problems |
- pressure(nBlock)
-
Array containing the pressure at the contact point projected at the end of the current time
increment.
- tempAvg(nBlock)
-
Average current temperature between the main and secondary surfaces at the contact point.
- fieldAvg(nBlock,nFields)
-
Average current value of all the user-specified field variables between the main and secondary
surfaces at the contact point.
|