Class containing the properties of the soil compaction model used in agxTerrain, such as compression index and soil hardening constants.
More...
#include <TerrainMaterial.h>
Class containing the properties of the soil compaction model used in agxTerrain, such as compression index and soil hardening constants.
CompressionIndex - Describes how quickly the density of the material increases with compression. SwellFactor - Describes the amount the soil swells when going from its bank state to its loose state. HardeningRate - Describes how quickly the Young's modulus of the material increases with compression. PreconsolidationStress - Describes the pressure the soil was consolidated by. CompactionTimeRelaxationConstant - Describes how quickly the material is compressed when exposed to a compressing stress. StressCutOffFraction - Describes the fraction of the surface stress that must be reached before cutting off stress calculations downward in the Terrain. angleOfReposeCompactionRate - Describes how quickly the angle of repose of the material increases with compression.
Definition at line 304 of file TerrainMaterial.h.
◆ CompactionProperties()
agxTerrain::TerrainMaterial::CompactionProperties::CompactionProperties |
( |
| ) |
|
◆ ~CompactionProperties()
virtual agxTerrain::TerrainMaterial::CompactionProperties::~CompactionProperties |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ getAngleOfReposeCompactionRate()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getAngleOfReposeCompactionRate |
( |
| ) |
const |
- Returns
- how the compaction should affect the angle of repose.
- Note
- See 'setAngleOfReposeCompactionRate' for explanation of scaling law.
◆ getBankStatePhi()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getBankStatePhi |
( |
| ) |
const |
- Returns
- the bank state phi0 used in the compression algorithm (See 'setBankStatePhi'), defined as compaction = 1.0 of the material.
◆ getCompactionTimeRelaxationConstant()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getCompactionTimeRelaxationConstant |
( |
| ) |
const |
- Returns
- the time relaxation constant for compaction. See setCompactionTimeRelaxationConstant. for explanation of compaction rate relaxation.
◆ getCompressionIndex()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getCompressionIndex |
( |
| ) |
const |
- Returns
- the compression index of the material, i.e how fast the material should increase in density from increased stress. See
setCompressionIndex
for scaling law.
◆ getDilatancyAngleScalingFactor()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getDilatancyAngleScalingFactor |
( |
| ) |
const |
|
inline |
Get the dilatancy angle scaling factor with respect to the compaction in the terrain.
The dilatancy angle modifies the effective local angle of friction in terrain by the following formula:
eff_friction_angle = friction_angle + scalingFactor * ( voxelCompaction - criticalCompaction )
- Returns
- the dilatancy angle scaling factor
Definition at line 958 of file TerrainMaterial.h.
◆ getHardeningConstantKE()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getHardeningConstantKE |
( |
| ) |
const |
- Returns
- the hardening constant k_e of the bulk material, i.e how the Young's modulus of the terrain contacts should scale with increasing/decreasing compaction.
- Note
- - See 'setHardeningConstantsKE' for scaling law
◆ getHardeningConstantNE()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getHardeningConstantNE |
( |
| ) |
const |
- Returns
- the hardening constant n_e of the bulk material, i.e how the Young's modulus of the terrain contacts should scale with increasing/decreasing compaction.
- Note
- - See 'setHardeningConstantsNE' for scaling law
◆ getPreconsolidationStress()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getPreconsolidationStress |
( |
| ) |
const |
- Returns
- the pre-consolidation stress (Pa) of the material, i.e how much stress is needed in order to compact the soil further than the starting nominal compaction.
- Note
- - Nominal compaction is defined as 1.0.
◆ getStressCutOffFraction()
agx::Real agxTerrain::TerrainMaterial::CompactionProperties::getStressCutOffFraction |
( |
| ) |
const |
- Returns
- the fraction of the surface stress that should serve as a cutoff value from when the stress propagation from the surface downward into the soil should stop.
◆ setAngleOfReposeCompactionRate()
void agxTerrain::TerrainMaterial::CompactionProperties::setAngleOfReposeCompactionRate |
( |
agx::Real |
angleOfReposeCompactionRate | ) |
|
Set how the compaction should increase the angle of repose.
The tan of the angle of repose is increased by the following factor: The applied angle of repose of the material is active when the soil is in loose compaction, i.e has compaction 1.0 / swellFactor.
m = 2.0 ^ ( angleOfReposeCompactionRate * ( compaction - (1.0/swellFactor) ) )
- Parameters
-
angleOfReposeCompactionRate | - the specified compaction angle of repose rate to set to the bulk material. (Default: 1.0) |
◆ setBankStatePhi()
void agxTerrain::TerrainMaterial::CompactionProperties::setBankStatePhi |
( |
agx::Real |
phi0 | ) |
|
Set the phi0 value of the bank state soil.
This is used in the compaction calculation where soil stress generates compacted soil. note See 'setCompressionIndex' for an explanation of how phi0 is used in compaction calculations.
- Parameters
-
phi0 | - The specified phi0 of the soil in the bank state. (Default: 0.5) |
◆ setCompactionTimeRelaxationConstant()
void agxTerrain::TerrainMaterial::CompactionProperties::setCompactionTimeRelaxationConstant |
( |
agx::Real |
compactionTimeRelaxationConstant | ) |
|
Set time relaxation for compaction.
The factor is used to cap the change in density during the contact according to: change in density during time step = change in density from compaction * timeFactor where: timeFactor = 1.0 - exp(contactTime/tau)
- Parameters
-
compactionTimeRelaxationConstant | - the specified time constant to be set on the bulk material. (Default: 0.05) |
◆ setCompressionIndex()
void agxTerrain::TerrainMaterial::CompactionProperties::setCompressionIndex |
( |
agx::Real |
compressionIndex | ) |
|
Sets the compression index for the soil, which is the constant that determines how fast the soil should compress given increased surface stress.
The formula for computing the compaction curve is given by the following expression:
rho_new = rho_old * ( 1.0 / ( 1.0 - phi0 * C * ln( stress / preconsolidationStress ) ) )
where 'C' is the compression index, 'rho_new' is the new density of the material, 'rho_old' is the old density before compaction, 'preconsolidationStress' is stress used to initialize the soil in the bank sate, 'stress' is the applied compaction stress and phi zero is derived from the initial void ratio e0 ( Default phi0: 0.5 ) in the soil:
phi0 = e0 / ( 1.0 + e0 )
- Parameters
-
compressionIndex | - The compression index C used in the formula above. (Default: 0.1) |
◆ setDilatancyAngleScalingFactor()
void agxTerrain::TerrainMaterial::CompactionProperties::setDilatancyAngleScalingFactor |
( |
agx::Real |
scalingFactor | ) |
|
Set the dilatancy angle scaling factor with respect to compaction in the terrain.
The dilatancy angle modifies the effective local angle of friction in terrain by the following formula:
eff_friction_angle = friction_angle + scalingFactor * ( voxelCompaction - criticalCompaction )
- Parameters
-
scalingFactor | - The specified dilatancy angle scaling factor to set. ( Default: 20 * agx::PI / 180 radians ) |
◆ setHardeningConstantKE()
void agxTerrain::TerrainMaterial::CompactionProperties::setHardeningConstantKE |
( |
agx::Real |
k_e | ) |
|
Set the hardening constant k_e of the bulk material, i.e how the Young's modulus of the terrain contacts should scale with increasing/decreasing compaction.
The formula for this is:
E_eff = E_0 * ( 1.0 + sign( compaction - 1.0 ) * k_e * ( abs( compaction - 1.0 ) ^ n_e ) )
where 'E_eff' is the effective Young's Modulus, 'E_0' is the original Young's modulus, 'compaction' is the local compaction of the material, 'k_e' is and 'n_e' are hardening parameters that for a constant packing ratio has values 1.0 and 0.5 respectively.
- Parameters
-
k_e | - The hardening constant k_e of the material. (Default: 1.0) |
◆ setHardeningConstantNE()
void agxTerrain::TerrainMaterial::CompactionProperties::setHardeningConstantNE |
( |
agx::Real |
n_e | ) |
|
Set the hardening constant n_e of the bulk material, i.e how the Young's modulus of the terrain contacts should scale with increasing/decreasing compaction.
The formula for this is:
E_eff = E_0 * ( 1.0 + sign( compaction - 1.0 ) * k_e * ( abs( compaction - 1.0 ) ^ n_e ) )
where 'E_eff' is the effective Young's Modulus, 'E_0' is the original Young's modulus, 'compaction' is the local compaction of the material, 'k_e' is and 'n_e' are hardening parameters that for a constant packing ratio has values 1.0 and 0.5 respectively.
- Parameters
-
n_e | - The hardening constant n_e of the material. (Default: 0.5) |
◆ setPreconsolidationStress()
void agxTerrain::TerrainMaterial::CompactionProperties::setPreconsolidationStress |
( |
agx::Real |
preconsolidationStress | ) |
|
Set the stress at which the soil in the default state was compressed in, i.e when it has nominal compaction 1.0.
In order to compress the soil further, the applied stress on the soil has to exceed this.
- Parameters
-
preconsolidationStress | - the specified preconsolidationStress to set on the bulk material when in nominal compaction. (Default: 98e3 Pa) |
◆ setStressCutOffFraction()
void agxTerrain::TerrainMaterial::CompactionProperties::setStressCutOffFraction |
( |
agx::Real |
stressCutOffFraction | ) |
|
Set the fraction of the surface stress that should serve as a cutoff value from when the stress propagation from the surface downward into the soil should stop.
- Parameters
-
stressCutOffFraction | - the fraction of the surface stress that serves as the cutoff. (Default: 0.01) |
◆ AGXTERRAIN_STORE_RESTORE_INTERFACE
agxTerrain::TerrainMaterial::CompactionProperties::AGXTERRAIN_STORE_RESTORE_INTERFACE |
The documentation for this class was generated from the following file: