public abstract class ElasticContactBase extends ContactForceBehavior
Modifier and Type | Class and Description |
---|---|
static class |
ElasticContactBase.DampingMethod
Describes how the method
computeDamping(double, double) computes the
net damping d from the damping factor df . |
Modifier and Type | Field and Description |
---|---|
static FieldPropertyList |
myProps |
TWO_WAY_CONTACT
Constructor and Description |
---|
ElasticContactBase()
Need no-args constructor for scanning
|
Modifier and Type | Method and Description |
---|---|
ElasticContactBase |
clone()
Returns a clone of this composite property.
|
FieldPropertyList |
getAllPropertyInfo()
Returns a list giving static information about all properties exported by
this object.
|
double |
getDampingFactor()
Queries the damping factor for this material.
|
ElasticContactBase.DampingMethod |
getDampingMethod()
Queries the damping method for this material.
|
double |
getMinThicknessRatio()
Queries the minimum thickness ratio for this material.
|
double |
getThickness()
Queries the thickness of the foundation layer.
|
ScalarFieldComponent |
getThicknessField()
Queries the field, if any, associated with the foundation thickness.
|
boolean |
getUseLocalContactArea()
Queries whether local contact areas are used for computing
contact pressure.
|
boolean |
getUseLogDistance()
Queries whether log distances are used for computing contact
forces.
|
void |
setDampingFactor(double df)
Sets the damping factor for this material.
|
void |
setDampingMethod(ElasticContactBase.DampingMethod method)
Sets the damping method for this material, which determines how damping
forces are compute.
|
void |
setMinThicknessRatio(double r)
Sets the minimum thickness ratio for this material.
|
void |
setThickness(double h)
Sets the thickness of the foundation layer.
|
void |
setThicknessField(ScalarFieldComponent field)
Binds the foundation thickness to a field, or unbinds it if
field
is null . |
void |
setUseLocalContactArea(boolean enable)
Queries whether local contact areas are used for computing contact
pressure.
|
void |
setUseLogDistance(boolean enable)
Sets whether log distances are enabled for computing contact forces.
|
void |
writeItems(java.io.PrintWriter pw,
NumberFormat fmt,
CompositeComponent ancestor) |
computeContactArea, computeResponse, getSubClasses, registerSubclass
advanceState, createStateObject, getProperty, getPropertyHost, getPropertyInfo, hasProperty, hasState, hasSymmetricTangent, isWritable, postscan, scaleDistance, scaleMass, scan, setPropertyHost, setPropertyInfo, symmetryOrStateChanged, updateMaterial, write
public static FieldPropertyList myProps
public ElasticContactBase()
public FieldPropertyList getAllPropertyInfo()
HasProperties
getAllPropertyInfo
in interface HasProperties
getAllPropertyInfo
in class MaterialBase
public double getThickness()
public void setThickness(double h)
h
- new foundation layer thicknesspublic ScalarFieldComponent getThicknessField()
null
public void setThicknessField(ScalarFieldComponent field)
field
is null
.field
- field to bind to, or null
public double getMinThicknessRatio()
setMinThicknessRatio(double)
.public void setMinThicknessRatio(double r)
h*(1-r)
, then the contact force revert
to a linear formulation, using the stiffness value at the threshold
point. This ensures that restoring forces are still defined even for
penetrations through the foundation layer.r
- new minimum thickness ratiopublic double getDampingFactor()
setDampingFactor(double)
.public void setDampingFactor(double df)
ElasticContactBase.DampingMethod
.df
- new damping factorpublic ElasticContactBase.DampingMethod getDampingMethod()
setDampingMethod(artisynth.core.materials.ElasticContactBase.DampingMethod)
.public void setDampingMethod(ElasticContactBase.DampingMethod method)
ElasticContactBase.DampingMethod
.method
- new damping methodpublic boolean getUseLogDistance()
setUseLogDistance(boolean)
.true
if log distances are used for computing contact
forcespublic void setUseLogDistance(boolean enable)
ln (1 + d/h)where
d
is the (negatively valued) penetration distance,
and h
is the foundation layer thickness. This ensures
that forces increase non-linearly to prevent penetration of
the foundation layer.enable
- if true
, enables using log distances to compute
contact forcespublic boolean getUseLocalContactArea()
setUseLocalContactArea(boolean)
.true
if local contact areas are used for
computing pressurepublic void setUseLocalContactArea(boolean enable)
ContactForceBehavior.computeResponse(double[], double, artisynth.core.modelbase.ContactPoint, artisynth.core.modelbase.ContactPoint, maspack.matrix.Vector3d, double, int)
, the system
will attempt to determine the area around each contact using local vertex
information for that contact. Otherwise, it will use the value of the
contactArea
argument.enable
- if true
, enables using local contact areas for
computing pressurepublic ElasticContactBase clone()
clone
in interface CompositeProperty
clone
in interface Clonable
clone
in class MaterialBase
public void writeItems(java.io.PrintWriter pw, NumberFormat fmt, CompositeComponent ancestor) throws java.io.IOException
writeItems
in class MaterialBase
java.io.IOException