Nonlinear Imperfect Interface

From OSUPDOCS
Jump to navigation Jump to search

Description

This imperfect interface contact law implements an imperfect interface with tractions that depend on displacement discontinuities at the interface. The tractions must have continuous first derivative. The current version supports only two traction laws. The material model, however, can easily be edited to create a custom imperfect interface model.

Nonlinear Interface Laws

The normal and tangential interface laws currently available are listed below. These can be selected for either direction using the normal_shape or tangential_shape properties.

Linear Interface

This implementation is essentially that same as a Linear Imperfect Interface, but it is implemented without assuming a linear interface law (one use to to verify it matches more detailed solution in the Linear Imperfect Interface). Because this non-linear implementation assumes continuous first derivative, however, this linear interface has to have the same stiffness in tension and compression (i.e., Dnt=Dnc). If you need to model a bilinear interface law, use the Linear Imperfect Interface model instead.

Morse Potential

Morse.jpg

A Morse potential is sometimes used in molecular modeling to describe bonding potential between two atoms as a function of separation distance. It is used here as an example of a reversible traction law with a peak traction. For this law, the interfacial potential energy is:

      [math]\displaystyle{ \phi_i = D_e\left(1-e^{-\alpha [u]}\right) }[/math]

where [math]\displaystyle{ D_e }[/math] is dissociation energy and [math]\displaystyle{ \alpha }[/math] controls with width of the potential well. The interfacial traction as a function of discontinuity [math]\displaystyle{ [u] }[/math] is found by differentiating energy:

      [math]\displaystyle{ T = 2\alpha D_ee^{-\alpha [u]}\left(1-e^{-\alpha [u]}\right) }[/math]

When using this potential to model an imperfect interface, it is convenient to express it using interface parameters as

      [math]\displaystyle{ \alpha = \frac{D}{4T_{max}} \quad{\rm and}\quad D_e = \frac{8T_{max}^2}{D} }[/math]

where D is interfacial stiffness at [math]\displaystyle{ [u]=0 }[/math] (i.e, [math]\displaystyle{ T'(0)=D }[/math]) and [math]\displaystyle{ T_{max} }[/math] is the peak traction. A dimensionless plot for interfacial traction is shown in the figure. This law is very stiff in compression. It reaches a peak value when discontinuity is

      [math]\displaystyle{ [u] = \frac{4T_{max}\ln 2}{D} = \frac{\ln 2}{\alpha} }[/math]

If used for tangential traction, the calculations always find [math]\displaystyle{ [u_t]\ge0 }[/math] meaning the tensile section of the plot will be used in both directions for tangential tractions.

Like all imperfect interface laws, this traction is reversible and interfacial energy is always area under the curve from 0 to current discontinuity. To use this law in normal or tangential direction, set the shape property and then enter both stiffness and peak value for that direction. Note that the peak in the normal direction will only affect simulations if the discontinuity at the peak value is less than twice the cell size in the calculations. If it too large, the materials will numerically separate before reaching the peak. The simulation output will give peak location to be compared to grid resolution.

Properties

The properties for this law are:

Property Description Units Default
normal_shape or tangential_shape Pick which interface law to use for normal or tangential directions, respectively, by interger. Use 0 for linear law or 1 for Morse potential. 0
Dn and Dt See Linear Imperfect interface properties. For Morse potential it is stiffness from slope at zero discontinuity. Note that this model cannot model bilinear interface and therefore one cannot set Dnt≠Dnc pressure/length units -1
Npeak or Tpeak For a Morse potential, these properties pick the normal or tangential peak traction, respectively. pressure units]] none

Create Custom Imperfect Interface

Another use of this imperfect interface law is a place anyone can add code to model new imperfect interface laws. The laws are assumed to be elastic and the traction must have continuous first derivative. The custom implementation process is:

Define Shape Code

In NonlinearInterface.hpp define a new code for the new shape being implemented by adding a new constant to the enumerated list

enum { NL_LINEAR_INTERFACE=0,MORSE_POTENTIAL,MAX_STYLES };

The new code should be inserted before MAX_STYLES and the new law can be selected using that code in normal_shape or tangential_shape properties

Add Interface Law Parameters

If the law needs new interface law parameters, add code to read them in NonlinearInterface.hpp method:

char *NonlinearInterface::InputContactProperty(char *xName,int &input,double &gScaling)

You can define parameters by methods used for current parameters. The scaling parameter is only needed if your are using legacy units and then should be scaling to convert your units into the mm-g-s units.

If you create new material properties, they should be added to the NairnMPM.dtd file. The best approach is to search for an existing property (like Npeak) and insert new property with new name (usually needed two place in the DTD file).

If any new properties haverestrictions on allowed values, add code to

const char *NonlinearInterface::VerifyAndLoadProperties(int np)

to check entered values. If they are not allowed, return a string that explains the error.

Finally, to record use of the new properties in simulation output, add code to

void NonlinearInterface::PrintContactLaw(void) const

to describe which law is being used along with its relevant properties.

MPM Calculations

The remaining changes to NonlinearInterface.cpp are to use the law in MPM calculations.

Check for Stability

int CheckDnStability(double d,double m) const
int CheckDtStability(double d,double m) const
Check to be sure current stiffness is not too high for modeling. This code already implements theoretical limit that [math]\displaystyle{ \phi^2 = \frac{d}{m} \lt 1.5^2 }[/math] and therefore may not need any changes. If needed, you can insert other checks when using the new law that checks and returns FORCE_STIFF if stiffness is too high or STABLE if interface calculations can proceed.

Interface Law Properties

Interface law calculations are done in the following methods. Each one has a switch(style) block to add any implemented law. When adding a new law, insert a case block (with code defined above) to return to following values. If you are using legacy units, be sure to return values using the mm-g-s units.

double GetFn(double delta,double area) const
double GetFt(double delta,double area) const
Return the force due to the traction law at the provided displacement discontinuity delta. The force must be in Force units for given displacement in Length units. Most imperfect interface laws give a traction or stress. To convert such a law to force, multiply the traction by the contact area (provided in the area).
double GetFnPrime(double delta,double area) const
double GetFtPrime(double delta,double area) const
Return derivative of the force due to the traction law at the provided displacement discontinuity delta. The derivative must be in Force units/Length units for given displacement in Length units. Imperfect interface laws give a traction or stress derviative per unit discontinuity. To convert such a law to force derivative units, multiply the traction derivative by the contact area (provided in the area).
double GetFnEnergy(double delta,double area) const
double GetFtPrime(double delta,double area) const
Return area under the traction law up to given displacement discontinuity in delta (in Length units). The units of the return value should be Energy units. Most imperfect interface laws give a traction or stress. To convert integration of such a law to energy, multiply by the contact area (provided in the area). Note: interfacial energy can be archived in the global archiving interface energy option, but has no other affect on calculations. It does not contribute to dissipated energy and does not cause any temperature changes.

Examples

 Material "interfaceID","My Imperfect Interface","NoninearInterface"
   normal_shape 0
   tangential_shape 0
   Dn 500
   Dt -1
 Done