185 const agx::Real& receivingSurfaceCompaction,
186 const agx::Real& reposingSurfaceCompaction);
This class is used to describe the general material properties of the Terrain.
Utility class where most of the physics calculation used in agxTerrain is gathered.
static agx::Real calculateHardnessMultiplier_CAM_CLAY(agx::Real k_e, agx::Real n_e, agx::Real compaction)
Calculate the hardness multiplier for the the Cam-Clay model from critical-state theories.
static agx::Real calculateBoussinesqFrolichSubSoilStress(agx::Real depth, agx::Real surfaceForce, agx::Real concentrationFactor, const agx::Vec3 &rk_vec)
Calculate stress at a given depth and distance from a surface point force using the Boussinesq-Frolic...
static agx::Real calculateStressFromUniformDiskLoad(agx::Real depth, agx::Real surfaceLoad, agx::Real diskRadius)
Calculate stress at a given depth directly under the middle axis of a uniform disk,...
static agx::Real calculateDilatancyAngle(agx::Real dilatancyAngleScalingFactor, agx::Real dilatancyAngle, agx::Real compaction)
Calculate the dilatancy angle for a TerrainMaterial given a specific compaction.
static agx::Real estimateCriticalCompaction(agx::Real dilatancyAngleScalingFactor, agx::Real dilatancyAngle)
Estimate the critical compaction of a TerrainMaterial which is used in calculating the local dilatanc...
static agx::Real calculateDilatancyAngleVoxel(const Terrain *terrain, const agx::Vec3i &voxelIndex)
Calculate the local dilatancy angle in a specified voxel in the terrain.
static agx::Real getAngleOfReposeMultiplier(Terrain *terrain, const agx::Vec3i &voxelIndex, const agx::Real compaction)
Calculate the multiplier which is used to modify the local angle of repose of the material given the ...
static bool calculateNewCompactionFromStressLog10(Terrain *terrain, const agx::Vec3i &voxelIndex, agx::Real stress, agx::Real timeFactor, agx::Real &newCompaction)
Estimate new compaction in a voxel from an applied stress using the density log10 method.
static bool calculateNewCompactionFromStressVoidRatio(Terrain *terrain, const agx::Vec3i &voxelIndex, agx::Real stress, agx::Real timeFactor, agx::Real &newCompaction)
Estimate new compaction in a voxel from an applied stress using the void ratio method.
static agx::Real calculateTanReposeAngle(Terrain *terrain, const agx::Vec2i &reposingIndex)
static agx::Real calculateEffectiveFrictionAngleVoxel(const Terrain *terrain, const agx::Vec3i &voxelIndex)
Calculate the effective friction angle of a voxel in a specific terrain.
static agx::Real calculateEffectiveFrictionAngleTerrainIndex(const Terrain *terrain, const agx::Vec2i &terrainIndex)
Calculate the effective friction angle at the surface of a specific terrain with a given terrain inde...
static agx::Real calculateCompressionMultiplier(agx::Real hardnessRate, agx::Real compaction)
Calculate the compression multiplier which is used to modify the Young's Modulus of terrain contacts ...
static agx::Real calculateYoungsModulus_POW2(agx::Real originalYoungsModulus, agx::Real hardeningRate, agx::Real compaction)
Calculate a new Young's modulus given a hardening rate and compaction.
static agx::Real calculatePreconsolidationStressVoidRatio(Terrain *terrain, const agx::Vec3i &voxelIndex)
Calculate the pre-consolidation stress of the material in a voxel with specified index using the void...
static agx::Vec2 calculateReposeHeights(Terrain *terrain, const agx::Vec3i &receivingSurfaceVoxelIndex, const agx::Vec3i &reposingSurfaceVoxelIndex, const agx::Vec2 &tanReposeAngles)
Performs the same calculations as calculateReposeHeight and also computes the height difference for t...
static agx::Real calculateEffectiveFrictionAngle(agx::Real nominalFrictionAngle, agx::Real dilatancyAngleScalingFactor, agx::Real nominalDilatancyAngle, agx::Real compaction)
Calculate the effective friction angle of a TerrainMaterial given a specified compaction.
static agx::Real calculatePreconsolidationStressLog10(Terrain *terrain, const agx::Vec3i &voxelIndex)
Calculate the pre-consolidation stress of the material in a voxel with specified index using the void...
static agx::Real calculateYoungsModulus_CAM_CLAY(agx::Real originalYoungsModulus, agx::Real k_e, agx::Real n_e, agx::Real compaction)
Calculate a new Young's modulus using the Cam-Clay model from critical-state theories.
static agx::Real calculateReposeHeight(Terrain *terrain, const agx::Vec2i &receivingIndex, const agx::Vec2i &reposingIndex)
Calculate the local repose height, i.e the height difference where above that avalanching will begin,...
static agx::Real calculateCompactionTimeFactor(agx::Real contactTime, agx::Real tau_c)
Calculate the compaction time factor used to relax the compaction rate of the material.
static agx::Real getAngleOfReposeMultiplier(Terrain *terrain, const agx::Vec3i &voxelIndex)
Calculate the multiplier which is used to modify the local angle of repose of the material given the ...
static agx::Real calculateEffectiveReposeAngle(const TerrainMaterial *terrainMaterial)
Calculate the effective repose angle of a specific terrain, unmodified by compaction.
static agx::Vec2 calculateReposeHeights(Terrain *terrain, const agx::Vec3i &receivingSurfaceVoxelIndex, const agx::Vec3i &reposingSurfaceVoxelIndex, const agx::Vec2 &tanReposeAngles, const agx::Real &receivingSurfaceCompaction, const agx::Real &reposingSurfaceCompaction)
Performs the same calculations as calculateReposeHeight and also computes the height difference for t...
A terrain model based a 3D grid model with overlapping height field that can be deformed by interacti...
The agxTerrain namespace contains a 3D model for a dynamic deformable Terrain and related classes.