| 
 User Subroutine Interface      SUBROUTINE UINTER(STRESS,DDSDDR,DVISCOUS,DSTRUCTURAL,FLUX,DDFDDT,
     1 DDSDDT,DDFDDR,STATEV,SED,SFD,SPD,SVD,SCD,PNEWDT,RDISP,
     2 DRDISP,
     3 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,FREQR,CINAME,SECNAME,
     4 MAINNAME,
     5 PROPS,COORDS,ALOCALDIR,DROT,AREA,CHRLNGTH,NODE,NDIR,NSTATV,
     6 NPRED,NPROPS,MCRD,KSTEP,KINC,KIT,LINPER,LOPENCLOSE,LSTATE,
     7 LSDI,LPRINT)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CINAME,SECNAME,MAINNAME
      DIMENSION STRESS(NDIR),DDSDDR(NDIR,NDIR),FLUX(2),DDFDDT(2,2),
     1 DDSDDT(NDIR,2),DDFDDR(2,NDIR),STATEV(NSTATV),
     2 RDISP(NDIR),DRDISP(NDIR),TEMP(2),DTEMP(2),PREDEF(2,NPRED),
     3 DPRED(2,NPRED),TIME(2),PROPS(NPROPS),COORDS(MCRD),
     4 ALOCALDIR(3,3),DROT(2,2),DVISCOUS(NDIR,NDIR),
     5 DSTRUCTURAL(NDIR,NDIR)
      user coding to define STRESS, DDSDDR, FLUX, DDFDDT,
                    DDSDDT, DDFDDR, 
      and, optionally, STATEV, SED, SFD, SPD, SVD, SCD, PNEWDT, 
                    LOPENCLOSE, LSTATE, LSDI, DVISCOUS, DSTRUCTURAL
      RETURN
     
 END
 Variables to Be Defined
STRESS(NDIR)
This array is passed in as the stress between the secondary and main surfaces at the beginning of
              the increment and must be updated in this routine to be the stress at the end of the
              increment. The stress must be defined in a local coordinate system (see
                ALOCDIR). This variable must be defined for a
              stress/displacement, a fully coupled temperature-displacement, or a coupled
              thermal-electrical-structural analysis. The sign convention for stresses is that a
              positive stress indicates compression across contact surfaces, while a negative stress
              indicates tension. DDSDDR(NDIR,NDIR)
Interface stiffness matrix. DDSDDR(I,J)
  defines the change in the Ith stress component at the end of the time increment
  caused by an infinitesimal perturbation of the Jth component of the relative
  displacement increment array. Unless you invoke the unsymmetric equation
  solution capability in the contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard),
  
  Abaqus/Standard
  will use only the symmetric part of DDSDDR. For
  a particular off-diagonal (I,J) entry, the
  symmetrization is done by halving the sum of
  (I,J) and (J,I)
  components. DDSDDR must be defined for a
  stress/displacement, a fully coupled temperature-displacement, or a coupled
  thermal-electrical-structural analysis to ensure proper convergence
  characteristics. 
FLUX(2)
Magnitude of the heat flux flowing into the secondary and main surfaces, respectively. This array
              is passed in as the value at the beginning of the increment and must be updated to the
              flux at the end of the increment. The convention for defining the flux is that a
              positive flux indicates heat flowing into a surface, while a negative flux indicates
              heat flowing out of the surface. This variable must be defined for a heat transfer, a
              fully coupled temperature-displacement, or a coupled thermal-electrical-structural
              analysis. The sum of these two flux terms represents the heat generated in the
              interface, and the difference in these flux terms represents the heat conducted
              through the interface. DDFDDT(2,2)
The negative of the variation of the flux at the two surfaces with respect
  to their respective temperatures, for a fixed relative displacement. This
  variable must be defined for a heat transfer, a fully coupled
  temperature-displacement, or a coupled thermal-electrical-structural analysis
  to ensure proper convergence characteristics. The entries in the first row
  contain the negatives of the derivatives of
  FLUX(1) with respect to
  TEMP(1) and
  TEMP(2), respectively. The entries in the second
  row contain the negatives of the corresponding derivatives of
  FLUX(2). 
DDSDDT(NDIR,2)
Variation of the stress with respect to the temperatures of the two surfaces for a fixed relative
              displacement. This variable is required only for thermally coupled elements (in a
              fully coupled temperature-displacement or a coupled thermal-electrical-structural
              analysis), in which the stress is a function of the surface temperatures.
                DDSDDT(NDIR,1) corresponds to the secondary surface,
              and DDSDDT(NDIR,2) corresponds to the main surface. DDFDDR(2,NDIR)
Variation of the flux with respect to the relative displacement between the two surfaces. This
              variable is required only for thermally coupled elements (in a fully coupled
              temperature-displacement or a coupled thermal-electrical-structural analysis), in
              which the flux is a function of the relative displacement.
                DDFDDR(1,NDIR) corresponds to the secondary surface,
              and DDFDDR(2,NDIR) corresponds to the main surface.  
 Variables That Can Be Updated
DVISCOUS(NDIR,NDIR)
Interface viscous damping matrix that can be used in direct steady-state
  dynamic analysis and transient and steady-state mode-based dynamic analysis
  (including the subspace projection method), as well as in complex eigenvalue
  extraction, matrix generation, and substructure generation.
  DVISCOUS(I,J) defines an element in the material
  viscous damping matrix at the current frequency. 
  Abaqus/Standard
  requires that this element is defined as a damping value for each
  (I,J) entry in the damping matrix. 
 Unless you invoke the unsymmetric equation solution capability in the
  contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard),
  
  Abaqus/Standard
  uses only the symmetric part of DVISCOUS. For a
  particular off-diagonal (I,J) entry the
  symmetrization is done by halving the sum of the
  (I,J) and (J,I)
  components. 
DSTRUCTURAL(NDIR,NDIR)
Interface structural damping matrix that can be used in direct steady-state
  dynamic analysis and steady-state mode-based dynamic analysis (including the
  subspace projection method), as well as in complex eigenvalue extraction,
  matrix generation, and substructure generation.
  DSTRUCTURAL(I,J) defines an element in the
  material structural damping matrix. 
 Unless you invoke the unsymmetric equation solution capability in the
  contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard),
  
  Abaqus/Standard
  uses only the symmetric part of DSTRUCTURAL. For
  a particular off-diagonal (I,J) entry the
  symmetrization is done by halving the sum of the
  (I,J) and (J,I)
  components. 
STATEV(NSTATV)
An array containing the solution-dependent state variables. These are passed
  in as values at the beginning of the increment and must be returned as values
  at the end of the increment. You define the number of available state variables
  as described in 
  Allocating Space for Solution-Dependent State Variables.
  
SED
This variable is passed in as the value of the elastic energy density at the
  start of the increment and should be updated to the elastic energy density at
  the end of the increment. This variable is used for output only and has no
  effect on other solution variables. It contributes to the output variable ALLSE. 
SFD
This variable should be defined as the incremental frictional dissipation.
  The units are energy per unit area. This variable is used for output only and
  has no effect on other solution variables. It contributes to the output
  variables ALLFD and SFDR (and related variables). For computing its contribution to SFDR, SFD is divided by the time
  increment. 
SPD
This variable should be defined as the incremental dissipation due to
  plasticity effects in the interfacial constitutive behavior. The units are
  energy per unit area. This variable is used for output only and has no effect
  on other solution variables. It contributes to the output variable ALLPD. 
SVD
This variable should be defined as the incremental dissipation due to
  viscous effects in the interfacial constitutive behavior. The units are energy
  per unit area. This variable is used for output only and has no effect on other
  solution variables. It contributes to the output variable ALLVD. 
SCD
This variable should be defined as the incremental dissipation due to creep
  effects in the interfacial constitutive behavior. The units are energy per unit
  area. This variable is used for output only and has no effect on other solution
  variables. It contributes to the output variable ALLCD. 
PNEWDT
Ratio of suggested new time increment to the time increment currently being
  used (DTIME, see below). This variable allows
  you to provide input to the automatic time incrementation algorithms in 
  Abaqus/Standard
  (if automatic time incrementation is chosen). 
 PNEWDT is set to a large value before each
  call to 
  UINTER. 
 If PNEWDT is redefined to be less than 1.0, 
  Abaqus/Standard
  must abandon the time increment and attempt it again with a smaller time
  increment. The suggested new time increment provided to the automatic time
  integration algorithms is PNEWDT ×
  DTIME, where the
  PNEWDT used is the minimum value for all calls
  to user subroutines that allow redefinition of
  PNEWDT for this iteration. 
 If PNEWDT is given a value that is greater
  than 1.0 for all calls to user subroutines for this iteration and the increment
  converges in this iteration, 
  Abaqus/Standard
  may increase the time increment. The suggested new time increment provided to
  the automatic time integration algorithms is
  PNEWDT × DTIME,
  where the PNEWDT used is the minimum value for
  all calls to user subroutines for this iteration. 
 If automatic time incrementation is not selected in the analysis procedure,
  values of PNEWDT greater than 1.0 will be
  ignored and values of PNEWDT less than 1.0 will
  cause the job to terminate. 
LOPENCLOSE
An integer flag that is used to track the contact status in situations where
  user subroutine 
  UINTER is used to model standard contact between two surfaces,
  like the default hard contact model in 
  Abaqus/Standard.
  It comes in as the value at the beginning of the current iteration and should
  be set to the value at the end of the current iteration. It is set to −1 at the
  beginning of the analysis before 
  UINTER is called. You should set it to 0 to indicate an open
  status and to 1 to indicate a closed status. A change in this flag from one
  iteration to the next will have two effects. It will result in output related
  to a change in contact status if you request a detailed contact printout in the
  message file (The Abaqus/Standard Message File).
  In addition, it will also trigger a severe discontinuity iteration. Any time
  this flag is reset to a value of −1, 
  Abaqus/Standard
  assumes that the flag is not being used. A change in this flag from −1 to
  another value or vice versa will not have any of the above effects. 
LSTATE
An integer flag that should be used in non-standard contact situations where
  a simple open/close status is not appropriate or enough to describe the state.
  It comes in as the value at the beginning of the current iteration and should
  be set to the value at the end of the current iteration. It is set to −1 at the
  beginning of the analysis before 
  UINTER is called. It can be assigned any user-defined integer
  value, each corresponding to a different state. You can track changes in the
  value of this flag and use it to output appropriate diagnostic messages to the
  message file (unit 7). You may choose to output diagnostic messages only when a
  detailed contact printout is requested (The Abaqus/Standard Message File).
  In the latter case, the LPRINT parameter is
  useful. In conjunction with the LSTATE flag, you
  may also utilize the LSDI flag to trigger a
  severe discontinuity iteration any time the state changes from one iteration to
  the next. Any time this flag is reset to a value of −1, 
  Abaqus/Standard
  assumes that the flag is not being used. 
LSDI
This flag is set to 0 before each call to 
  UINTER and should be set to 1 if the current iteration should be
  treated as a severe discontinuity iteration. This would typically be done in
  non-standard contact situations based on a change in the value of the
  LSTATE flag from one iteration to the next. The
  use of this flag has no effect when the
  LOPENCLOSE flag is also used. In that case,
  severe discontinuity iterations are determined based on changes in the value of
  LOPENCLOSE alone. 
 
 Variables Passed in for Information
RDISP(NDIR)
An array containing the current relative positions between the two surfaces at the end of the
              increment. The first component is the relative position of the point on the secondary
              surface, with respect to the main surface, in the normal direction. The second and
              third components, if applicable, are the accumulated incremental relative tangential
              displacements, measured from the beginning of the analysis. For the relative position
              in the normal direction a negative quantity represents an open status, while a
              positive quantity indicates penetration into the main surface. For open points on the
              secondary surface for which no pairing main is found, the first component is a very
              large negative number (−1 × 1036). The local directions in which the
              relative displacements are defined are stored in
                ALOCALDIR. DRDISP(NDIR)
An array containing the increments in relative positions between the two
  surfaces. 
TEMP(2)
Temperature at the end of the increment at a point on the secondary surface and the opposing main
              surface, respectively. DTEMP(2)
Increment in temperature at the point on the secondary surface and the opposing main surface,
              respectively. PREDEF(2,NPRED)
An array containing pairs of values of all the predefined field variables at the end of the
              current increment (initial values at the beginning of the analysis and current values
              during the analysis). The first value in a pair,
                PREDEF(1,NPRED), corresponds to the value at the
              point on the secondary surface, and the second value,
                PFREDEF(2,NPRED), corresponds to the value of the
              field variable at the nearest point on the opposing surface. DPRED(2,NPRED)
Array of increments in predefined field variables. 
TIME(1)
Value of step time at the end of the increment. 
TIME(2)
Value of total time at the end of the increment. 
DTIME
Current increment in time. 
FREQR
Current frequency for steady-state dynamic analysis in rad/time. 
CINAME
User-specified surface interaction name, left justified. 
            SECNAME
          
Secondary surface name. 
            MAINNAME
          
Main surface name. PROPS(NPROPS)
User-specified array of property values to define the interfacial
  constitutive behavior between the contacting surfaces. 
COORDS(MCRD)
An array containing the current coordinates of this point. 
ALOCALDIR(3,3)
An array containing the direction cosines of the local surface coordinate system. The directions
              are stored in columns. For example, ALOCALDIR(1,1),
                ALOCALDIR(2,1), and
                ALOCALDIR(3,1) give the (1, 2, 3) components of the
              normal direction. Thus, the first direction is the normal direction to the surface,
              and the remaining two directions are the local tangent directions in the plane of the
              surface. The local system is defined by the geometry of the main surface. The
              convention for the local directions is the same as the convention in situations where
              the model uses the built-in contact capabilities in Abaqus/Standard (described in Contact Formulations in Abaqus/Standard for the
              tangential directions). DROT(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.
  Relative displacement components are already rotated by this amount before 
  UINTER is called. This matrix is passed in as a unit matrix for
  two-dimensional and axisymmetric contact problems. 
AREA
Surface area associated with the contact point. 
CHRLNGTH
Characteristic contact surface face dimension. 
NODE
User-defined global secondary node number (or internal node number for models defined in terms of
              an assembly of part instances) involved with this contact point. Corresponds to the
              predominant secondary node of the constraint if the surface-to-surface contact
              formulation is used. NDIR
Number of force components at this point. 
NSTATV
Number of solution-dependent state variables. 
NPRED
Number of predefined field variables. 
NPROPS
User-defined number of property values associated with this interfacial
  constitutive model (Interfacial Constants).
  
MCRD
Number of coordinate directions at the contact point. 
KSTEP
Step number. 
KINC
Increment number. 
KIT
Iteration number. KIT=1 for the first
  assembly, KIT=2 for the first recovery/second
  assembly, KIT=3 for the second recovery/third
  assembly, and so on. 
LINPER
Linear perturbation flag. LINPER=1 if the
  step is a linear perturbation step. LINPER=0 if
  the step is a general step. For a linear perturbation step, the inputs to user
  subroutine 
  UINTER represent perturbation quantities about the base state.
  The user-defined quantities in 
  UINTER are also perturbation quantities. The Jacobian terms
  should be based on the base state. No change in contact status should occur
  during a linear perturbation step. 
LPRINT
This flag is equal to 1 if a detailed contact printout to the message file
  is requested and 0 otherwise (The Abaqus/Standard Message File).
  This flag can be used to print out diagnostic messages regarding changes in
  contact status selectively only when a detailed contact printout is requested. 
 |