Nonlinear Imperfect Interface
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
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
