These user subroutines are available for modifying or monitoring contact element behavior (CONTA172, CONTA174, CONTA175, CONTA177, and CONTA178):
The user subroutines are called for each contact detection point of active contact pairs in each iteration during the solution. The input to these user subroutines includes the current and previous contact status, contact stresses, normal penetration/gap, tangential slip increments, and temperatures at the contact detection point and the corresponding interacting point on the target surface.
You can specify the number of extra state variables (NSTV
)
to be saved for the user subroutines via the NSVR command. The
maximum number of extra state variables should not exceed 840. The total number of
integration points of an element (nintp) is a supplied input argument for the
subroutines. Therefore, the number of additional state variables per integration point
is NSTV
/nintp.
Use the USEROU
subroutine to store user-supplied element outputs
in the non-summable miscellaneous (NMISC) record. You must enter the
USRCAL command in order to activate the
USEROU
subroutine. The maximum number of user-defined output
items cannot exceed 120 and should be less than or equal to
NSTV
on the NSVR command. The number
of NMISC records can be obtained by this function call: etyiqr(ITYPE,-110).
Keep the following points in mind when using any of these subroutines to define contact interfacial behaviors:
The user subroutines
USERCNPROP
,USERFRIC
, andUSERINTER
all modify the contact behavior, so only a single subroutine should be used for a given contact pair. However, you can use all three subroutines in a single model as long as each subroutine acts on a unique contact pair.In order to implement the
USERFRIC
,USERINTER
, orUSERWEAR
subroutine in your model, you must define related properties via the TB family of commands and assign the associated material ID to the contact elements. See Writing Your Own Friction Law (USERFRIC
), Defining Your Own Contact Interaction (USERINTER
), and Defining Your Own Contact Surface Wear Behavior (USERWEAR
) for more information.The use of
USERFRIC
orUSERINTER
overrides the behavior of program-supplied interfacial features (for example, debonding defined via the TB,CZM command, impact constraints defined by KEYOPT(7) = 4, surface interaction models defined by KEYOPT(12)). Therefore, you must take care if behaviors implemented by such features are desired. In this case, you must program the desired behavior into theUSERFRIC
orUSERINTER
subroutine instead of relying on program input.The user subroutines
USERFRIC
andUSERINTER
should not be used if the fast thermal transient solver option (THOPT,QUASI) is being used.You can use the /UPF command in batch mode to link user subroutines into Mechanical APDL. The command method cannot be used when the program is run in interactive mode.
For more information about the /UPF command and other methods of implementing user subroutines, see Compiling and Linking UPFs on Linux Systems and Compiling and Linking UPFs on Windows Systems in the Programmer's Reference.
The USERCNPROP
subroutine enables you to define your own
contact properties via real constants. For example, you can define a nonlinear
contact pressure-penetration relationship instead of utilizing a linear one (that
is, using a constant contact stiffness). The contact stiffness can be varied due to
pressure, penetration, temperature, and your own state variables.
The real constants that can be defined via this user subroutine are noted in the real constant table found in each contact element description (CONTA172, CONTA174, CONTA175, CONTA177, and CONTA178).
Some of the most commonly used input and output arguments for
USERCNPROP
are discussed below. For a complete list of input and
output arguments, see the description of Subroutine usercnprop (Programming Your Own Contact Properties) in the Programmer's Reference.
When defining user-defined real constants with the R,
RMORE, or RMODIF command, you must use the
Mechanical APDL reserved table name _CNPROP and enclose it in % signs (%_CNPROP%). When a
value field in one of these commands is set to %_CNPROP%, the program internally
calls the USERCNPROP
subroutine. For example, to specify your
own normal contact stiffness, FKN, you would issue a command similar to the
following:
RMODIF,NSET,3,%_CNPROP% ! NSET is the real constant set ID associated with the contact pair
You can define the real constant as a function of certain input arguments as described in the following table:
USERCNPROP Input Argument
| Description |
kstat | Contact status |
stress(1) | Tangential stress in direction 1 |
stress(2) | Tangential stress in direction 2 |
stress(3) | Contact normal pressure (positive value for compression, negative value for tension) |
stress(4) | Heat flux flowing into contact surface (positive value is heat flowing out of the surface, negative value is heat flowing into the surface) |
stress(5) | Heat flux flowing into target surface (positive value is heat flowing out of the surface, negative value is heat flowing into the surface) |
stress(6) | Electric current density (or pore fluid flux density) flowing into contact surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) |
stress(7) | Electric current density (or pore fluid flux density) flowing into target surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) |
stress(8) | Diffusion density flowing into contact surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) |
stress(9) | Diffusion density flowing into target surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) |
Certain passed-in arguments such as contact status (kstat), contact pressure (stress(3)), and tangential stresses (stress(1) and stress(2)) are not current (that is, from the current iteration) for real constants FKN, TAUMAX, CNOF, FKOP, FKT, PPCN. FDMN, FDMT. In this case, the values from the previous iteration are used instead. However, the contact status, contact pressure, and tangential stresses are current for all non-structural related real constants (such as TCC, ECC, MCC, PCC, RDVF, ABPP, FPFT, DCC, DCON, ABDC).
Other input arguments include those listed in the following table. These arguments are all current.
USERCNPROP Input Argument
| Description |
---|---|
strain(1) | Tangential slip increment in direction 1 |
strain(2) | Tangential slip increment in direction 2 |
strain(3) | Normal penetration/gap (positive value represents penetration, negative value represents gap) |
strain(4) | Temperature at the contact detection point |
strain(5) | Temperature at the target point |
strain(6) | Voltage (or pore pressure) at the contact point |
strain(7) | Voltage (or pore pressure) at the target point |
strain(8) | Concentration at the contact point |
strain(9) | Concentration at the target point |
strain0(i) | Array variable containing the above values at the end of the previous substep |
intIn(1) to intIn(21) | Integer values such as element number, analysis type, and so on |
realIn(1) to realIn(12) | Real values such as contact element length, pinball radius, and so on |
Real constants can be defined in the time or frequency domain, depending on the analysis type. For static and transient analyses, the input argument realIn(7) represents the current time value. For harmonic analysis, realIn(7) represents the current frequency value.
You can also define your real constants as a function of extra solution-dependent
state variables. The extra state variables can be updated and used within the user
subroutine. Use the NSVR command to specify the number of extra
state variables that need to be saved for the USERCNPROP
subroutine, as described in the table of input/output arguments shown below.
USERCNPROP Input/Output Argument
| Description | Notes | ||
---|---|---|---|---|
usvr | User-defined state variables | Use the NSVR command to size the usvr array and to set nuval to the same value as the number of variables on NSVR. This array is passed in as the values at the beginning of the substep. If any of the solution-dependent state variables are being used for the user-defined interaction behavior, they must be updated to the values at the end of the substep (when kupdhis = 1). | ||
keyerr | Element level error key |
Key to indicate if there are any element formulation errors such as abrupt changes in contact status or too much penetration. The error could be caused by an incremental step that is too large or an illegal model.
The program decides to stop the analysis or cutback the substep (bi-section) based on other user input and information at a higher level. |
The user subroutine passes in the position of the real constant in the real constant table (kcnprop), and you need to return the value of the relevant real constant, cnprop(1). If the real constant is a function of contact gap/penetration, contact pressure, or temperature, you can also return the associated derivatives as described in the following table:
USERCNPROP Output Argument
| Description | Notes |
---|---|---|
cnprop(1) | Updated value of the real constant | |
cnprop(2) | Derivative of the real constant with respect to the gap function | For example, the thermal conductance TCC can be defined as a function of geometric penetration/gap (positive value for penetration, negative value for gap). If the real constant is not a function of gap, you simply return cnprop(2) = 0.0. |
cnprop(3) | Derivative of the real constant with respect to contact pressure | For example, the thermal conductance TCC can be defined as a function of contact pressure (positive value for compression, negative value for tension). If the real constant is not a function of pressure, you simply return cnprop(3) = 0.0. |
cnprop(4) | Derivative of the real constant with respect to temperature at the contact detection point | If the real constant is not a function of temperature at the contact point, you simply return cnprop(4) = 0.0. |
cnprop(5) | Derivative of the real constant with respect to temperature at the target | If the real constant is not a function of temperature at the target, you simply return cnprop(5) = 0.0. |
The subroutine can be called multiple times for a contact detection point during each iteration, based on how many real constants are defined through the label %_CNPROP%. Be careful to define the correct position of the user-defined variables (usvr) during each call. Otherwise, the previously defined variables could be overwritten during subsequent access to the subroutine within an iteration.
You can preassign the contact pair ID (RID in the example below) to a parameter
(‘PAIRID’ in the example below) and then call subroutine PAREVL inside
of USERCNPROP
to get the contact pair ID. Follow the example
below as a template for using this function inside of
USERCNPROP
:
cName = 'PAIRID' subc(1) = 0.0d0 call parevl(cName,0,subc(1),2,RID,string,kerr)
In this way, one unified USERCNPROP
routine can handle
contact properties not only for different real constants, but also for different
contact pairs.
The USERFRIC
subroutine enables you to program your own
friction model for 2D and 3D contact elements (CONTA172, CONTA174,
CONTA175, CONTA177, and
CONTA178) when the existing
program-supplied friction models are not adequate. The frictional stresses can be
defined as a function of variables such as slip increments, sliding rate,
temperature, and other input arguments. You can specify a number of properties or
constants associated with your friction model, and you can introduce extra
solution-dependent state variables that can be updated and used within the
subroutine.
Some of the most commonly used input and output arguments for
USERFRIC
are discussed below. For a complete list of input
and output arguments, see the description of Subroutine userfric (Writing Your Own Friction Laws) in the Programmer's Reference.
After writing a USERFRIC
subroutine to program your friction
model, you incorporate the model in your analysis by using the
TB,FRIC command with TBOPT
= USER and
specifying the friction properties on the TBDATA command, as
shown below. The number of friction properties is defined through NPTS on the
TB,FRIC
command.
TB,FRIC,1,,2,USER ! Activate user defined friction model; NPTS = 2 TBDATA,1,PROP1,PROP2 ! Define friction properties
Field variables specified with the TBFIELD command are not available for TB,FRIC,,,,USER.
Use the NSVR command to specify the number of extra state
variables that need to be saved for the USERFRIC
subroutine.
Use the USEROU
subroutine to store user-supplied element
outputs in non-summable miscellaneous (NMISC) records. You must enter the
USRCAL command in order to activate the
USEROU
subroutine. The maximum number of user-defined
output items should not exceed the number of user-defined state variables.
The USERFRIC
subroutine is called at the contact detection
point when the contact is closed.
Some of the input arguments are described in the following table:
USERFRIC Input Argument
| Description | Notes | ||
---|---|---|---|---|
dslip(ncomp) | Slip increment for the current subset | |||
pres | Current normal contact pressure (positive value for compression, negative value for tension) | |||
tau(ncomp) | Frictional stress component at the beginning of the substep. | The passed-in values include the contribution from Lagrange multipliers if the Lagrange multiplier method (KEYOPT(2) = 4) is specified. | ||
kn | Current normal contact stiffness | |||
kt | Tangential contact stiffness | You can use the passed-in values for computing the frictional stresses. However, you can also pick a suitable value that allows minimal tangential elastic slip during sticking without adversely affecting the convergence. A possible choice could be kt = mu*kn. For the Lagrange multiplier method (KEYOPT(2) = 4), you should use a small kt (several orders of magnitude smaller than mu*pres). | ||
tcont | Current temperature at the contact point | |||
ttarg | Current temperature at the target point | |||
uprop(npropu) | User-defined frictional properties defined through the TB,FRIC command | |||
kupdhis | Key to indicate if history-dependent variables (user-defined) need to be updated after the substep has converged |
|
Some of the input/output arguments are described in the following table:
USERFRIC Input/Output Argument
| Description | Notes | ||||
---|---|---|---|---|---|---|
kstat | Contact status:
| You can make decisions about the sticking/sliding condition based on the slip increments and the updated frictional stresses. | ||||
tau(ncomp) | Updated frictional stress | This is passed in as the values of the frictional stress component at the beginning of the substep and must be updated to the values at the end of the substep. The passed-in values include the contribution from Lagrange multipliers, if the Lagrange multiplier method (KEYOPT(2) = 4) is defined. In the user subroutine, you can define the friction stresses as a function of slip increment (dslip), normal contact pressure (pres), and other input arguments or user-defined state variables. | ||||
slip(ncomp) | Total accumulated slip | This is the accumulated value of dslip from the previous substeps. | ||||
mu | Friction coefficient | This is passed in as the value at the beginning of the current substep. It is updated to be the value at the end of the current substep. |
You must define the following output arguments:
USERFRIC Output Argument
| Description | Notes |
---|---|---|
dt(i,j) | Partial derivative of frictional stresses and normal pressure with respect to the slip increments, normal gap distance, and temperatures | The partial derivative of frictional stresses with respect to the temperatures dt(1,4), dt(1,5), dt(2,4), and dt(2,5) can be used only for coupled thermal-structural and coupled thermal-electrical-structural analyses in which the frictional stresses are defined as a function of the surface temperatures. |
dtdp(ncomp) | Partial derivative of frictional stresses with respect to the normal pressure | This contributes to the element stiffness matrix when a Lagrange multiplier method (KEYOPT(2)= 3 or 4) is used. |
usvr(nuval) | User-defined state variables | Use the NSVR command to size the usvr array and to set nuval to the same value as the number of variables on NSVR. This array is passed in as the values at the beginning of the substep. If any of the solution-dependent state variables are being used for the user-defined friction behavior, they must be updated to the values at the end of the substep (when kupdhis = 1). |
fdiss | Incremental frictional dissipation | The units are energy per unit area. For purely structural analysis, this argument is used for output only and has no effect on the solution. In coupled thermal-structural and coupled thermal-electrical-structural analyses, the dissipation is converted into heat. |
elener | Incremental elastic stored energy density | This argument is used for output only and has no effect on the solution. |
As an alternative to the USERFRIC
subroutine that allows for
user-defined frictional behavior, subroutine USERINTER
is
available for defining complex interactions between contacting surfaces, including
interactions in the normal and tangential directions, and coupled-field
interactions.
You can write a USERINTER
subroutine to program your own
contact interactions for 2D and 3D contact elements (CONTA172, CONTA174,
CONTA175, CONTA177, and
CONTA178) when the existing interaction
models are not adequate. The contact normal stress, tangential stress, and heat flux
can be defined as a function of variables such as slip increment, sliding rate,
temperature, and other input arguments. You can specify a number of properties or
constants associated with your interaction model, and you can introduce extra
solution-dependent state variables that can be updated and used within the
subroutine.
Some of the most commonly used input and output arguments for
USERINTER
are discussed below. For a complete list of input and
output arguments, see the description of Subroutine userinter (Writing Your Own Contact Interactions) in the Programmer's Reference.
After writing a USERINTER
subroutine to program your
interaction model, you incorporate the model in your analysis by using the command
TB,INTER with TBOPT
= USER and
specifying the interaction properties on the TBDATA command as
shown below. The number of interaction properties is defined through
NPTS
on the TB,INTER command.
TB,INTER,1,,2,USER ! Activate user defined contact interaction; NPTS = 2 TBDATA,1,PROP1,PROP2 ! Define interaction properties
Field variables specified with the TBFIELD command are not available for TB,INTER,,,,USER.
Use the NSVR command to specify the number of extra state
variables that need to be saved for the USERINTER
subroutine.
Use the USEROU
subroutine to store user-supplied element
outputs in non-summable miscellaneous (NMISC) records. You must enter the
USRCAL command in order to activate the
USEROU
subroutine. The maximum number of user-defined
output items should not exceed the number of user-defined state variables.
The USERINTER
subroutine is called at each contact detection
point in each iteration.
In a structural analysis, you must define the current stresses. In a coupled thermal-structural analysis or a coupled thermal-electrical-structural analysis, you must also define the heat flux and electric current density, respectively, across the interface for the current time. The interaction calculation is based on (a) the relative motion between the contact detection point and the associated intersecting target point, (b) temperatures, and (c) user-defined state variables. The state variables can be used and updated within this subroutine. You must also define the material tangent modulus (interface stiffness matrix) to ensure proper convergence behavior.
If effects of contact damping are taken into account, you need to define the interface damping matrix. The interface damping matrix can be used in a complex modal analysis, a full transient structural analysis, or a harmonic analysis at a given frequency.
Some of the input arguments are described in the following table:
USERINTER Input Argument
| Description | Notes | ||
---|---|---|---|---|
dslip(ncomp) | Current strain component | |||
strain(1) | Slip increment in direction 1 | Mechanical component. | ||
strain(2) | Slip increment in direction 2 (3-d only) | Mechanical component. | ||
strain(3) | Contact normal penetration/gap (positive value represents penetration, negative value represents gap) | Mechanical component. | ||
strain(4) | Temperature at the contact detection point | This argument is generally used for coupled thermal-structural or thermal-electric-structural analysis. The temperature components strain(4) and strain(5) can also be used for a structural analysis as long as it is defined through temperature loadings. | ||
strain(5) | Temperature at the target intersecting point | This argument is generally used for coupled thermal-structural or thermal-electric-structural analysis. The temperature components strain(4) and strain(5) can also be used for a structural analysis as long as they are defined through temperature loadings. | ||
strain(6) | Voltage (or pore pressure) at the contact point | This argument is used for coupled thermal-electric-structural analysis, or for coupled pore fluid-structural analysis | ||
strain(7) | Voltage (or pore pressure) at the target point | This argument is used for coupled thermal-electric-structural analysis, or for coupled pore fluid-structural analysis | ||
strain(8) | Concentration at the contact point | This argument is used for coupled structural-thermal-electric-diffusion analysis | ||
strain(9) | Concentration at the target point | This argument is used for coupled structural-thermal-electric-diffusion analysis | ||
uprop(npropu) | User-defined interfacial properties (defined through the TB,INTER command) | |||
kupdhis | Key to indicate if history-dependent variables (user-defined) need to be updated after the substep has converged |
| ||
intIn(1) to intIn(20) | Integer values such as element number, analysis type, and so on | |||
realIn(1) to realIn(14) | Real values such as contact element length, pinball radius, and so on |
The USERINTER
subroutine can be used in the time or frequency
domain, depending on the analysis type. For static and transient analyses, the input
argument realIn(7) represents the current time value. For harmonic analysis, the
input argument realIn(7) represents the current frequency value.
Some of the input/output arguments are described in the following table:
USERINTER Input/Output Argument
| Description | Notes | ||||
---|---|---|---|---|---|---|
kstat | Contact status:
| You can make decisions about the contact status based on the relative position of the contact detection point with respect to the target surface, the slip increments, and other state variables. | ||||
stress(1) | Tangential stress in direction 1 | The passed-in values include the contribution from Lagrange multipliers if the pure Lagrange multiplier method (KEYOPT(2) = 4) is specified. | ||||
stress(2) | Tangential stress in direction 2 (3D only) | The passed-in values include the contribution from Lagrange multipliers if the pure Lagrange multiplier method (KEYOPT(2) = 4) is specified. | ||||
stress(3) | Contact normal pressure (positive value for compression, negative value for tension) | The passed-in values include the contribution from Lagrange multipliers if a Lagrange multiplier method (KEYOPT(2) = 3 or 4) is specified. | ||||
stress(4) | Heat flux (per area) flowing into the contact surface (positive value is heat flowing out of the surface, negative value is heat flowing into the surface) | Defined for a coupled thermal-structural or a thermal-electric-structural analysis. | ||||
stress(5) | Heat flux (per area) flowing into the target surface (positive value is heat flowing out of the surface, negative value is heat flowing into the surface) | Defined for a coupled thermal-structural or a thermal-electric-structural analysis. | ||||
stress(6) | Electric current density (or pore fluid flux density) flowing into contact surface (positive value is flux flowing out of surface, negative value is flux flowing into surface) | Defined for a coupled thermal-electric-structural analysis or a coupled pore-fluid-structural analysis | ||||
stress(7) | Electric current density (or pore fluid flux density) flowing into target surface (positive value is flux flowing out of surface, negative value is flux flowing into surface) | Defined for a coupled thermal-electric-structural analysis or a coupled pore-fluid-structural analysis | ||||
stress(8) | Diffusion density flowing into contact surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) | Defined for coupled structural-thermal-electric-diffusion analysis | ||||
stress(9) | Diffusion density flowing into target surface (positive value is flux flowing out of the surface, negative value is flux flowing into the surface) | Defined for coupled structural-thermal-electric-diffusion analysis | ||||
usvr(nuval) | User-defined state variables | Use the NSVR command to size the usvr array and to set nuval to the same value as the number of variables on NSVR. This array is passed in as the values at the beginning of the substep. If any of the solution-dependent state variables are being used for the user-defined interaction behavior, they must be updated to the values at the end of the substep (when kupdhis = 1). | ||||
mu | Friction coefficient | This is passed in as the value at the beginning of the current substep. It is updated to be the value at the end of the current substep. | ||||
elener | Total elastic stored energy density | The previous substep converged total elastic stored energy density is passed in, and the current substep total elastic stored energy density is output. | ||||
keycnv | Element level convergence |
Key to flag if this element satisfies the user defined element convergence criterion.
|
You must define the following output arguments:
USERINTER Output Argument
| Description | Notes | ||
---|---|---|---|---|
dt(ncomp,ncomp) | Partial derivative of the ith stress component with respect to the jth component of the relative strain increment array to ensure proper convergence behaviors | Terms dt(i,,j) (i > 3 or j > 3) are only used for a coupled thermal-structural analysis, a coupled thermal-electrical-structural analysis, a coupled pore pressure-structural analysis, or a coupled structural-thermal-electric-diffusion analysis in which the stress component is a function of the surface temperatures/voltage or the flux is a function of mechanical strain increments (gap/slip). | ||
dtdp(ncomp) | Partial derivative of the frictional stresses with respect to the normal pressure | This argument contributes to the element stiffness matrix when a Lagrange multiplier method (KEYOPT(2)= 3 or 4) is used. | ||
damp(3,3) | Interface damping matrix (structure only) | This argument contributes to the element damping matrix. | ||
fdiss | Incremental frictional dissipation | The units are energy per unit area. For purely structural analysis, this argument is used for output only and has no effect on the solution. In coupled thermal-structural and coupled thermal-electrical-structural analyses, the dissipation is converted into heat. | ||
keyerr | Element level error key |
Key to indicate if there are any element formulation errors such as abrupt changes in contact status or too much penetration. The error could be caused by an incremental step that is too large or an illegal model.
The program decides to stop the analysis or cutback the substep (bi-section) based on other user input and information at a higher level. |
When using a Lagrange multiplier method for normal constraint (KEYOPT(2) = 3 or 4), you should pick a very small normal contact stiffness, kn (several orders of magnitude smaller than the contact pressure). The passed-in normal pressure (stress(3)) includes the contribution from the normal Lagrange multiplier.
When using the Lagrange multiplier method for tangential constraint (KEYOPT(2) = 4), you should pick a very small tangential contact stiffness, kt (several orders of magnitude smaller than mu*pressure). The passed-in tangential stresses (stress(1), stress(2)) include the contributions from the tangential Lagrange multipliers.
Use the following example as a template to activate the user subroutines.
You can preassign the contact pair ID (RID in the example below) to a parameter
(‘PAIRID’ in the example below) and then call subroutine PAREVL inside
of USERINTER
to get the contact pair ID. Follow the example
below as a template for using this function inside of
USERINTER
:
cName = 'PAIRID' subc(1) = 0.0d0 call parevl(cName,0,subc(1),2,RID,string,kerr)
In this way, one unified USERINTER
routine can handle
different interactions based on contact pair ID.
Example 3.4: Using the /UPF Command to Link USERINTER
! The /UPF command offers the simplest method for linking ! user-programmable features into Mechanical APDL. ! It cannot be used when Mechanical APDL is run in interactive mode ! /UPF,userinter.F /UPF,userou.F /prep7 … ! ! define contact type ! ITYPE = 4 et,ITYPE,172 ! !Define user interactions ! TB,INTER,1, ,1,USER tbdata,1,0.42 ! define friction coefficient. !Additional saved variables ! The size of this array is: ! no of variables(nuval)* no of integration points(nintp). ! nsvr,ITYPE,5*2 … /solu … ! ! Activate user subroutine userou ! usrcal,userou solve /post1 … ! output additional state variables ! ! You can find the maximum number of NMISC for contact elements by ! issuing the following function call ! maxnmisc=etyiqr(ITYPE,-110) etab,MU1,NMISC,maxnmisc+1 etab,AASR1,NMISC,maxnmisc+2 etab,AASS1,NMISC,maxnmisc+3 etab,RASR1,NMISC,maxnmisc+4 etab,RASS1,NMISC,maxnmisc+5 etab,MU2,NMISC,maxnmisc+6 etab,AASR2,NMISC,maxnmisc+7 etab,AASS2,NMISC,maxnmisc+8 etab,RASR2,NMISC,maxnmisc+9 etab,RASS2,NMISC,maxnmisc+10 ! ! Output the user defined variables ! pretab,MU1,AASR1,AASS1,RASR1,RASS1 pretab,MU2,AASR2,AASS2,RASR2,RASS2
The USERWEAR
subroutine enables you to define your own
contact surface wear behavior. Specifically, you can define the wear increment as a
function of contact pressure and sliding velocities. For details, see User-Defined Wear Model (USERWEAR
).