AGX Dynamics 2.40.0.0
Loading...
Searching...
No Matches
agxTerrain::TerrainMaterial Class Reference

This class is used to describe the general material properties of the Terrain. More...

#include <TerrainMaterial.h>

+ Inheritance diagram for agxTerrain::TerrainMaterial:

Classes

class  BulkProperties
 Class containing the soil bulk properties of and agxTerrain object. More...
 
class  CompactionProperties
 Class containing the properties of the soil compaction model used in agxTerrain, such as compression index and soil hardening constants. More...
 
class  ParticleProperties
 Class containing the properties of the created soil particles in the Terrain, such as particle density and contact parameters amongst soil particles and between soil particles and the terrain surface. More...
 

Public Types

typedef agx::observer_ptr< const BulkPropertiesBulkPropertiesConstObserver
 
typedef agx::ref_ptr< const BulkPropertiesBulkPropertiesConstRef
 
typedef agx::observer_ptr< BulkPropertiesBulkPropertiesObserver
 
typedef agx::ref_ptr< BulkPropertiesBulkPropertiesRef
 
typedef agx::observer_ptr< const CompactionPropertiesCompactionPropertiesConstObserver
 
typedef agx::ref_ptr< const CompactionPropertiesCompactionPropertiesConstRef
 
typedef agx::observer_ptr< CompactionPropertiesCompactionPropertiesObserver
 
typedef agx::ref_ptr< CompactionPropertiesCompactionPropertiesRef
 
typedef agx::observer_ptr< const ExcavationContactPropertiesExcavationContactPropertiesConstObserver
 
typedef agx::ref_ptr< const ExcavationContactPropertiesExcavationContactPropertiesConstRef
 
typedef agx::observer_ptr< ExcavationContactPropertiesExcavationContactPropertiesObserver
 
typedef agx::ref_ptr< ExcavationContactPropertiesExcavationContactPropertiesRef
 
typedef agx::observer_ptr< const ParticlePropertiesParticlePropertiesConstObserver
 
typedef agx::ref_ptr< const ParticlePropertiesParticlePropertiesConstRef
 
typedef agx::observer_ptr< ParticlePropertiesParticlePropertiesObserver
 
typedef agx::ref_ptr< ParticlePropertiesParticlePropertiesRef
 

Public Member Functions

 TerrainMaterial (const agx::String &description="")
 Default constructor.
 
 ExcavationContactProperties (TerrainMaterial *terrainMaterial)
 Default constructor.
 
agx::Real getAggregateStiffnessMultiplier () const
 Internal Method.
 
BulkPropertiesgetBulkProperties () const
 
CompactionPropertiesgetCompactionProperties () const
 
agx::Real getDepthAngleThreshold () const
 Get the depth angle threshold between the separation normal and the terrain-aggregate contact plane.
 
agx::Real getDepthDecayFactor () const
 
agx::Real getDepthIncreaseFactor () const
 
const agx::StringgetDescription () const
 
ExcavationContactPropertiesgetExcavationContactProperties () const
 
agx::Real getExcavationStiffnessMultiplier () const
 Get the contact stiffness multiplier for the generated contacts between the soil aggregates <-> shovels in primary excavation.
 
agx::String getLastError () const
 
agx::Real getMaximumAggregateNormalForce () const
 
agx::Real getMaximumContactDepth () const
 
ParticlePropertiesgetParticleProperties () const
 
agx::Real getSoilPackingFraction () const
 
void printParameters () const
 Print the internal material parameters in a formatted way.
 
void setAggregateStiffnessMultiplier (agx::Real stiffnessMultiplier)
 Internal Method.
 
void setDepthAngleThreshold (agx::Real depthAngleThreshold)
 Set the depth angle threshold between the separation normal and the terrain-aggregate contact plane.
 
void setDepthDecayFactor (agx::Real depthDecay)
 Set the depth decay factor of a soil aggregate <-> terrain contact.
 
void setDepthIncreaseFactor (agx::Real depthIncreaseFactor)
 Set the depth increase factor of a soil aggregate <-> terrain contact.
 
void setDescription (const agx::String &description)
 Set the name of the object.
 
void setExcavationStiffnessMultiplier (agx::Real excavationStiffnessMultiplier)
 Set the contact stiffness multiplier for the generated contacts between the soil aggregates <-> shovels in primary excavation.
 
void setMaximumAggregateNormalForce (agx::Real maximumAggregateForce)
 Set the maximum force that the soil aggregate <-> terrain contacts are allowed to have.
 
void setMaximumContactDepth (agx::Real maximumDepth)
 Set the maximum depth (m) of a soil aggregate <-> terrain contact.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 

Public Attributes

 AGXTERRAIN_STORE_RESTORE_INTERFACE
 

Protected Member Functions

virtual ~ExcavationContactProperties ()
 
virtual ~TerrainMaterial ()
 
void synchronizeBulkProperties (Terrain *terrain)
 
void synchronizeParticleProperties (Terrain *terrain)
 
void updateParticleDensity (Terrain *terrain)
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Additional Inherited Members

- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

This class is used to describe the general material properties of the Terrain.

Properties that govern the contact properties in the shovel <-> soil aggregate and soil aggregate <-> terrain contacts during excavation.

When a TerrainMaterial instance is added to a terrain object, it affects the soil failure zone characteristics and feedback forces and also calibrates the internal contact materials governing soil dynamics. All the different parameters are grouped into different objects that reflects the phenomena that they affect:

BulkProperties - Holds the overarching bulk properties of the terrain and mainly affect excavation zone shapes, penetration resistance and contact material properties for excavation feedback forces.

CompactionProperties - Properties with regards to the compaction algorithm used in the terrain.

ParticleProperties - Properties that govern the soil dynamics of created soil particles during excavation, which is expressed via the contact material parameters within the soil particles and without.

ExcavationContactProperties - Properties that govern the contact properties in the shovel <-> soil aggregate and soil aggregate <-> terrain contacts during excavation.

These objects can be extracted from the TerrainMaterial instance in order to change the Terrain characteristics.

Note that using any of the set methods on a TerrainMaterial instance will cause it to recalibrate the set method's governing contact material parameter in the terrain instance. This can override any previous manual user setting of the terrain contact material.

The contacts have virtual depth that increases when the separation plane of the excavation presses against the plane of the aggregate <-> terrain contact. This class contains properties for governing the depth and force properties of those contacts.

Definition at line 53 of file TerrainMaterial.h.

Member Typedef Documentation

◆ BulkPropertiesConstObserver

◆ BulkPropertiesConstRef

◆ BulkPropertiesObserver

◆ BulkPropertiesRef

◆ CompactionPropertiesConstObserver

◆ CompactionPropertiesConstRef

◆ CompactionPropertiesObserver

◆ CompactionPropertiesRef

◆ ExcavationContactPropertiesConstObserver

◆ ExcavationContactPropertiesConstRef

◆ ExcavationContactPropertiesObserver

◆ ExcavationContactPropertiesRef

◆ ParticlePropertiesConstObserver

◆ ParticlePropertiesConstRef

◆ ParticlePropertiesObserver

◆ ParticlePropertiesRef

Constructor & Destructor Documentation

◆ TerrainMaterial()

agxTerrain::TerrainMaterial::TerrainMaterial ( const agx::String description = "")

Default constructor.

◆ ~TerrainMaterial()

virtual agxTerrain::TerrainMaterial::~TerrainMaterial ( )
protectedvirtual

◆ ~ExcavationContactProperties()

virtual agxTerrain::TerrainMaterial::~ExcavationContactProperties ( )
protectedvirtual

Member Function Documentation

◆ ExcavationContactProperties()

agxTerrain::TerrainMaterial::ExcavationContactProperties ( TerrainMaterial terrainMaterial)

Default constructor.

◆ getAggregateStiffnessMultiplier()

agx::Real agxTerrain::TerrainMaterial::getAggregateStiffnessMultiplier ( ) const

Internal Method.

Get the contact stiffness multiplier for the generated contacts between the soil aggregates <-> terrain for excavation and deformation. The final Young's modulus value that will be used in the contact material thus becomes:

YM_final = BulkYoungsModulus * stiffnessMultiplier

Returns
the specified stiffness multiplier for the Young's Modulus in soil aggregate contacts for excavation and deformation.

◆ getBulkProperties()

TerrainMaterial::BulkProperties * agxTerrain::TerrainMaterial::getBulkProperties ( ) const
inline
Returns
the compaction properties related to the soil compaction model of the terrain.

Definition at line 875 of file TerrainMaterial.h.

◆ getCompactionProperties()

TerrainMaterial::CompactionProperties * agxTerrain::TerrainMaterial::getCompactionProperties ( ) const
inline
Returns
the compaction properties related to the soil compaction model of the terrain.

Definition at line 881 of file TerrainMaterial.h.

◆ getDepthAngleThreshold()

agx::Real agxTerrain::TerrainMaterial::getDepthAngleThreshold ( ) const

Get the depth angle threshold between the separation normal and the terrain-aggregate contact plane.

When the angle is below this threshold, additional depth within the contact plane contributes to increasing the overall contact depth used in the terrain-aggregate contact model.

Returns
- the angle threshold for when aggregate <-> terrain contact model depth should increase.

◆ getDepthDecayFactor()

agx::Real agxTerrain::TerrainMaterial::getDepthDecayFactor ( ) const
Returns
the depth decay of an soil aggregate <-> terrain contact. This determines how rapidly the stored depth will decay during separation when the active zone moves away from the soil aggregate <-> terrain contact plane.

◆ getDepthIncreaseFactor()

agx::Real agxTerrain::TerrainMaterial::getDepthIncreaseFactor ( ) const
Returns
the depth increase factor of an soil aggregate <-> terrain contact. This governs how fast the depth should increase when the separation direction of the excavation intersects the contact plane, causing virtual soil compression between soil aggregates and the terrain.

◆ getDescription()

const agx::String & agxTerrain::TerrainMaterial::getDescription ( ) const
Returns
Then name of the object.

◆ getExcavationContactProperties()

TerrainMaterial::ExcavationContactProperties * agxTerrain::TerrainMaterial::getExcavationContactProperties ( ) const
inline
Returns
the excavation contact properties.

Definition at line 893 of file TerrainMaterial.h.

◆ getExcavationStiffnessMultiplier()

agx::Real agxTerrain::TerrainMaterial::getExcavationStiffnessMultiplier ( ) const

Get the contact stiffness multiplier for the generated contacts between the soil aggregates <-> shovels in primary excavation.

The final Young's modulus value that will be used in the contact material thus becomes:

YM_final = BulkYoungsModulus * stiffnessMultiplier

Returns
stiffnessMultiplier - Get the specified stiffness multiplier for the Young's Modulus in soil aggregate <-> shovel contacts for excavation.

◆ getLastError()

agx::String agxTerrain::TerrainMaterial::getLastError ( ) const
Returns
the last error during construction of the TerrainMaterial.
Note
- Construction is typically done in TerrainMaterialReaderWriter.

◆ getMaximumAggregateNormalForce()

agx::Real agxTerrain::TerrainMaterial::getMaximumAggregateNormalForce ( ) const
Returns
the maximum force that the soil aggregate <-> terrain contacts are allowed to have. Default maximum values are determined by the soil mechanics properties of the terrain.

◆ getMaximumContactDepth()

agx::Real agxTerrain::TerrainMaterial::getMaximumContactDepth ( ) const
Returns
the maximum depth (m) of an soil aggregate <-> terrain contact. This increases when the separation direction of the excavation intersects the contact plane, causing virtual soil compression between soil aggregates and the terrain.

◆ getParticleProperties()

TerrainMaterial::ParticleProperties * agxTerrain::TerrainMaterial::getParticleProperties ( ) const
inline
Returns
the soil particle properties of the agxTerrain material.

Definition at line 887 of file TerrainMaterial.h.

◆ getSoilPackingFraction()

agx::Real agxTerrain::TerrainMaterial::getSoilPackingFraction ( ) const
Returns
the packing fraction of the material

◆ printParameters()

void agxTerrain::TerrainMaterial::printParameters ( ) const

Print the internal material parameters in a formatted way.

◆ setAggregateStiffnessMultiplier()

void agxTerrain::TerrainMaterial::setAggregateStiffnessMultiplier ( agx::Real  stiffnessMultiplier)

Internal Method.

Set the contact stiffness multiplier for the generated contacts between the soil aggregates <-> terrain for excavation and deformation. The final Young's modulus value that will be used in the contact material thus becomes:

YM_final = BulkYoungsModulus * stiffnessMultiplier

Parameters
stiffnessMultiplier- Set the specified stiffness multiplier for the Young's Modulus in soil aggregate contacts for excavation and deformation. (Default: 0.002)

◆ setDepthAngleThreshold()

void agxTerrain::TerrainMaterial::setDepthAngleThreshold ( agx::Real  depthAngleThreshold)

Set the depth angle threshold between the separation normal and the terrain-aggregate contact plane.

When the angle is below this threshold, additional depth within the contact plane contributes to increasing the overall contact depth used in the terrain-aggregate contact model.

Parameters
depthAngleThreshold- The angle threshold for when aggregate <-> terrain contact model depth should increase. ( Default: pi / 4 ( 45 deg ) )

◆ setDepthDecayFactor()

void agxTerrain::TerrainMaterial::setDepthDecayFactor ( agx::Real  depthDecay)

Set the depth decay factor of a soil aggregate <-> terrain contact.

This determines how rapidly the stored depth in a terrain <-> aggregate contact will decay during separation when the active zone moves away from the soil aggregate <-> terrain contact plane.

Parameters
depthDecay- the decay factor of the depth of a terrain <-> aggregate contact during separation. (Default: 2.0)

◆ setDepthIncreaseFactor()

void agxTerrain::TerrainMaterial::setDepthIncreaseFactor ( agx::Real  depthIncreaseFactor)

Set the depth increase factor of a soil aggregate <-> terrain contact.

This governs how fast the depth should increase when the separation direction of the excavation intersects the contact plane, causing virtual soil compression between soil aggregates and the terrain.

Parameters
depthIncreaseFactor- The factor the governs how fast the depth should increase when the separation direction intersects with the contact plane. (Default: 1.0)

◆ setDescription()

void agxTerrain::TerrainMaterial::setDescription ( const agx::String description)

Set the name of the object.

◆ setExcavationStiffnessMultiplier()

void agxTerrain::TerrainMaterial::setExcavationStiffnessMultiplier ( agx::Real  excavationStiffnessMultiplier)

Set the contact stiffness multiplier for the generated contacts between the soil aggregates <-> shovels in primary excavation.

The final Young's modulus value that will be used in the contact material thus becomes:

YM_final = BulkYoungsModulus * stiffnessMultiplier

Parameters
excavationStiffnessMultiplier- Set the specified stiffness multiplier for the Young's Modulus in soil aggregate <-> shovel contacts for excavation. (Default: 1.0)

◆ setMaximumAggregateNormalForce()

void agxTerrain::TerrainMaterial::setMaximumAggregateNormalForce ( agx::Real  maximumAggregateForce)

Set the maximum force that the soil aggregate <-> terrain contacts are allowed to have.

Default maximum values are determined by the soil mechanics properties of the terrain.

Parameters
maximumAggregateForce- The maximum aggregate force that a terrain contact are allowed to have. (Default: inf)

◆ setMaximumContactDepth()

void agxTerrain::TerrainMaterial::setMaximumContactDepth ( agx::Real  maximumDepth)

Set the maximum depth (m) of a soil aggregate <-> terrain contact.

This increases when the separation direction of the excavation intersects the contact plane, causing virtual soil compression between soil aggregates and the terrain.

Parameters
maximumDepth- the maximum depth that the soil aggregate <-> terrain contacts are allowed to have. (Default: 1.0)

◆ synchronizeBulkProperties()

void agxTerrain::TerrainMaterial::synchronizeBulkProperties ( Terrain terrain)
protected

◆ synchronizeParticleProperties()

void agxTerrain::TerrainMaterial::synchronizeParticleProperties ( Terrain terrain)
protected

◆ updateParticleDensity()

void agxTerrain::TerrainMaterial::updateParticleDensity ( Terrain terrain)
protected

Member Data Documentation

◆ AGXTERRAIN_STORE_RESTORE_INTERFACE

agxTerrain::TerrainMaterial::AGXTERRAIN_STORE_RESTORE_INTERFACE

Definition at line 857 of file TerrainMaterial.h.


The documentation for this class was generated from the following file: