GEOSX
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
geos::SolidMechanicsMPM Class Reference

#include <SolidMechanicsMPM.hpp>

Inheritance diagram for geos::SolidMechanicsMPM:
Inheritance graph
[legend]

Classes

struct  viewKeyStruct
 

Public Types

enum  TimeIntegrationOption : integer { TimeIntegrationOption::QuasiStatic, TimeIntegrationOption::ImplicitDynamic, TimeIntegrationOption::ExplicitDynamic }
 
enum  BoundaryConditionOption : integer { BoundaryConditionOption::OUTFLOW, BoundaryConditionOption::SYMMETRY }
 

Public Member Functions

 SolidMechanicsMPM (const string &name, Group *const parent)
 
 SolidMechanicsMPM (SolidMechanicsMPM const &)=delete
 
 SolidMechanicsMPM (SolidMechanicsMPM &&)=default
 
SolidMechanicsMPMoperator= (SolidMechanicsMPM const &)=delete
 
SolidMechanicsMPMoperator= (SolidMechanicsMPM &&)=delete
 
virtual ~SolidMechanicsMPM () override
 
string getCatalogName () const override
 
virtual void initializePreSubGroups () override
 
virtual void registerDataOnMesh (Group &meshBodies) override final
 
virtual real64 solverStep (real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override
 
virtual real64 explicitStep (real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain) override
 
virtual void updateState (DomainPartition &domain) override final
 
virtual bool execute (real64 const time_n, real64 const dt, integer const cycleNumber, integer const eventCounter, real64 const eventProgress, DomainPartition &domain) override
 
template<typename CONSTITUTIVE_BASE , typename KERNEL_WRAPPER , typename ... PARAMS>
void assemblyLaunch (DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs, PARAMS &&... params)
 
template<typename ... PARAMS>
real64 explicitKernelDispatch (MeshLevel &mesh, arrayView1d< string const > const &targetRegions, string const &finiteElementName, real64 const dt, std::string const &elementListName)
 
void initialize (NodeManager &nodeManager, ParticleManager &particleManager, SpatialPartition &partition)
 
void resizeGrid (SpatialPartition &partition, NodeManager &nodeManager, real64 const dt)
 
void syncGridFields (std::vector< std::string > const &fieldNames, DomainPartition &domain, NodeManager &nodeManager, MeshLevel &mesh, MPI_Op op)
 
void singleFaceVectorFieldSymmetryBC (const int face, arrayView3d< real64 > const &vectorMultiField, arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const gridPosition, Group &nodeSets)
 
void enforceGridVectorFieldSymmetryBC (arrayView3d< real64 > const &vectorMultiField, arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const gridPosition, Group &nodeSets)
 
void applyEssentialBCs (const real64 dt, const real64 time_n, NodeManager &nodeManager)
 
void computeGridSurfaceNormals (ParticleManager &particleManager, NodeManager &nodeManager)
 
void normalizeGridSurfaceNormals (arrayView2d< real64 const > const &gridMass, arrayView3d< real64 > const &gridSurfaceNormal)
 
void computeContactForces (real64 const dt, arrayView2d< real64 const > const &gridMass, arrayView2d< real64 const > const &gridDamage, arrayView2d< real64 const > const &gridMaxDamage, arrayView3d< real64 const > const &gridVelocity, arrayView3d< real64 const > const &gridMomentum, arrayView3d< real64 const > const &gridSurfaceNormal, arrayView3d< real64 const > const &gridMaterialPosition, arrayView3d< real64 > const &gridContactForce)
 
void computePairwiseNodalContactForce (int const &separable, real64 const &dt, real64 const &mA, real64 const &mB, arraySlice1d< real64 const > const vA, arraySlice1d< real64 const > const GEOS_UNUSED_PARAM(vB), arraySlice1d< real64 const > const qA, arraySlice1d< real64 const > const qB, arraySlice1d< real64 const > const nA, arraySlice1d< real64 const > const nB, arraySlice1d< real64 const > const xA, arraySlice1d< real64 const > const xB, arraySlice1d< real64 > const fA, arraySlice1d< real64 > const fB)
 
void computeOrthonormalBasis (const real64 *e1, real64 *e2, real64 *e3)
 
void setGridFieldLabels (NodeManager &nodeManager)
 
void solverProfiling (std::string label)
 
void solverProfilingIf (std::string label, bool condition)
 
real64 computeNeighborList (ParticleManager &particleManager)
 
void optimizeBinSort (ParticleManager &particleManager)
 
real64 kernel (real64 const &r)
 
void kernelGradient (arraySlice1d< real64 const > const x, std::vector< real64 > &xp, real64 const &r, real64 *result)
 
real64 computeKernelField (arraySlice1d< real64 const > const x, arrayView2d< real64 const > const xp, arrayView1d< real64 const > const Vp, arrayView1d< real64 const > const fp)
 
void computeKernelFieldGradient (arraySlice1d< real64 const > const x, std::vector< std::vector< real64 > > &xp, std::vector< real64 > &Vp, std::vector< real64 > &fp, arraySlice1d< real64 > const result)
 
void computeKernelVectorGradient (arraySlice1d< real64 const > const x, std::vector< std::vector< real64 > > &xp, std::vector< real64 > &Vp, std::vector< std::vector< real64 > > &fp, arraySlice2d< real64 > const result)
 
void computeDamageFieldGradient (ParticleManager &particleManager)
 
void updateSurfaceFlagOverload (ParticleManager &particleManager)
 
void projectDamageFieldGradientToGrid (ParticleManager &particleManager, NodeManager &nodeManager)
 
void updateDeformationGradient (real64 dt, ParticleManager &particleManager)
 
void updateConstitutiveModelDependencies (ParticleManager &particleManager)
 
void updateStress (real64 dt, ParticleManager &particleManager)
 
void particleKinematicUpdate (ParticleManager &particleManager)
 
void computeAndWriteBoxAverage (const real64 dt, const real64 time_n, ParticleManager &particleManager)
 
void initializeGridFields (NodeManager &nodeManager)
 
void boundaryConditionUpdate (real64 dt, real64 time_n)
 
void particleToGrid (ParticleManager &particleManager, NodeManager &nodeManager)
 
void gridTrialUpdate (real64 dt, NodeManager &nodeManager)
 
void enforceContact (real64 dt, DomainPartition &domain, ParticleManager &particleManager, NodeManager &nodeManager, MeshLevel &mesh)
 
void interpolateFTable (real64 dt, real64 time_n)
 
void gridToParticle (real64 dt, ParticleManager &particleManager, NodeManager &nodeManager)
 
void updateSolverDependencies (ParticleManager &particleManager)
 
real64 getStableTimeStep (ParticleManager &particleManager)
 
void deleteBadParticles (ParticleManager &particleManager)
 
void printProfilingResults ()
 
void computeSurfaceFlags (ParticleManager &particleManager)
 
void computeSphF (ParticleManager &particleManager)
 
int evaluateSeparabilityCriterion (localIndex const &A, localIndex const &B, real64 const &damageA, real64 const &damageB, real64 const &maxDamageA, real64 const &maxDamageB)
 
void flagOutOfRangeParticles (ParticleManager &particleManager)
 
void computeRVectors (ParticleManager &particleManager)
 
void cpdiDomainScaling (ParticleManager &particleManager)
 
void resizeMappingArrays (ParticleManager &particleManager)
 
void populateMappingArrays (ParticleManager &particleManager, NodeManager &nodeManager)
 

Static Public Member Functions

static string catalogName ()
 

Public Attributes

geos::SolidMechanicsMPM::viewKeyStruct solidMechanicsViewKeys
 

Protected Member Functions

virtual void postProcessInput () override final
 
virtual void setConstitutiveNamesCallSuper (ParticleSubRegionBase &subRegion) const override
 

Protected Attributes

std::vector< array2d< localIndex > > m_mappedNodes
 
std::vector< array2d< real64 > > m_shapeFunctionValues
 
std::vector< array3d< real64 > > m_shapeFunctionGradientValues
 
int m_solverProfiling
 
std::vector< real64m_profilingTimes
 
std::vector< std::string > m_profilingLabels
 
TimeIntegrationOption m_timeIntegrationOption
 
MPI_iCommData m_iComm
 
int m_prescribedBcTable
 
array1d< int > m_boundaryConditionTypes
 
array2d< real64m_bcTable
 
int m_prescribedBoundaryFTable
 
Path m_fTablePath
 
int m_fTableInterpType
 
array2d< real64m_fTable
 
array1d< real64m_domainF
 
array1d< real64m_domainL
 
int m_boxAverageHistory
 
int m_reactionHistory
 
int m_needsNeighborList
 
real64 m_neighborRadius
 
int m_binSizeMultiplier
 
int m_useDamageAsSurfaceFlag
 
int m_cpdiDomainScaling
 
real64 m_smallMass
 
int m_numContactGroups
 
int m_numContactFlags
 
int m_numVelocityFields
 
real64 m_separabilityMinDamage
 
int m_treatFullyDamagedAsSingleField
 
int m_surfaceDetection
 
int m_damageFieldPartitioning
 
int m_contactGapCorrection
 
real64 m_frictionCoefficient
 
int m_planeStrain
 
int m_numDims
 
array1d< real64m_hEl
 
array1d< real64m_xLocalMin
 
array1d< real64m_xLocalMax
 
array1d< real64m_xLocalMinNoGhost
 
array1d< real64m_xLocalMaxNoGhost
 
array1d< real64m_xGlobalMin
 
array1d< real64m_xGlobalMax
 
array1d< real64m_partitionExtent
 
array1d< real64m_domainExtent
 
array1d< int > m_nEl
 
array3d< int > m_ijkMap
 

Detailed Description

This class implements a material point method solution to the equations of motion.

Definition at line 44 of file SolidMechanicsMPM.hpp.

Member Enumeration Documentation

◆ BoundaryConditionOption

The options for essential boundary conditions

Enumerator
OUTFLOW 

Outflow.

SYMMETRY 

Symmetry.

Definition at line 65 of file SolidMechanicsMPM.hpp.

◆ TimeIntegrationOption

The options for time integration

Enumerator
QuasiStatic 

QuasiStatic.

ImplicitDynamic 

ImplicitDynamic.

ExplicitDynamic 

ExplicitDynamic.

Definition at line 53 of file SolidMechanicsMPM.hpp.

Constructor & Destructor Documentation

◆ SolidMechanicsMPM()

geos::SolidMechanicsMPM::SolidMechanicsMPM ( const string name,
Group *const  parent 
)

Constructor

Parameters
nameThe name of the solver instance
parentthe parent group of the solver

◆ ~SolidMechanicsMPM()

virtual geos::SolidMechanicsMPM::~SolidMechanicsMPM ( )
overridevirtual

destructor

Member Function Documentation

◆ catalogName()

static string geos::SolidMechanicsMPM::catalogName ( )
inlinestatic
Returns
The string that may be used to generate a new instance from the SolverBase::CatalogInterface::CatalogType

Definition at line 94 of file SolidMechanicsMPM.hpp.

◆ execute()

virtual bool geos::SolidMechanicsMPM::execute ( real64 const  time_n,
real64 const  dt,
integer const  cycleNumber,
integer const  eventCounter,
real64 const  eventProgress,
DomainPartition domain 
)
overridevirtual

This method is called when its host event is triggered

◆ getCatalogName()

string geos::SolidMechanicsMPM::getCatalogName ( ) const
inlineoverride

Definition at line 98 of file SolidMechanicsMPM.hpp.


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