UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType > Class Template Reference

#include <GaussSeidelCorotatedConstraints.h>

+ Inheritance diagram for Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >:

Public Member Functions

 FGaussSeidelCorotatedConstraints (const ParticleType &InParticles, const TArray< TVector< int32, 4 > > &InMesh, const TArray< T > &EMeshArray, const TArray< T > &NuMeshArray, TArray< T > &&AlphaJMeshArray, TArray< TArray< int32 > > &&IncidentElementsIn, TArray< TArray< int32 > > &&IncidentElementsLocalIn, const int32 ParticleStartIndexIn, const int32 ParticleEndIndexIn, const bool bDoQuasistaticsIn=false, const bool bDoSORIn=true, const T InOmegaSOR=(T) 1.6, const FDeformableXPBDCorotatedParams &InParams=FDeformableXPBDCorotatedParams(), const T &NuMesh=(T).3, const bool bRecordMetricIn=false)
 
virtual ~FGaussSeidelCorotatedConstraints ()
 
void Apply (ParticleType &Particles, const T Dt) const
 
void Init (const T Dt, const ParticleType &Particles) const
 
void Init () const override
 
TArray< TArray< int32 > > & GetIncidentElements ()
 
TArray< TArray< int32 > > & GetIncidentElementsLocal ()
 
TArray< TVector< int32, 4 > > GetMeshConstraints () const
 
void SetParticlesPerColor (TArray< TArray< int32 > > &&InParticlesPerColor)
 
TArray< TArray< int32 > > GetMeshArray () const
 
void ApplySOR (ParticleType &Particles, const T Dt) const
 
Chaos::TVector< T, 3 > ComputePerParticleResidual (const int32 p, const int32 IncidentIndex, const ParticleType &Particles, const T Dt, const bool AddMass=true) const
 
Chaos::PMatrix< T, 3, 3 > ComputePerParticleCorotatedHessianSimple (const int32 p, const int32 IncidentIndex, const ParticleType &Particles, const T Dt, const bool AddMass=true) const
 
void AddHyperelasticResidualAndHessian (const ParticleType &Particles, const int32 ElementIndex, const int32 ElementIndexLocal, const T Dt, TVec3< T > &ParticleResidual, Chaos::PMatrix< T, 3, 3 > &ParticleHessian)
 
- Public Member Functions inherited from Chaos::Softs::FXPBDCorotatedConstraints< T, ParticleType >
 FXPBDCorotatedConstraints (const ParticleType &InParticles, const TArray< TVector< int32, 4 > > &InMesh, const bool bRecordMetricIn=true, const T &EMesh=(T) 10.0, const T &NuMesh=(T).3)
 
 FXPBDCorotatedConstraints (const ParticleType &InParticles, const TArray< TVector< int32, 4 > > &InMesh, const TArray< T > &EMeshArray, const T &NuMesh=(T).3, const bool bRecordMetricIn=false)
 
 FXPBDCorotatedConstraints (const ParticleType &InParticles, const TArray< TVector< int32, 4 > > &InMesh, const TArray< T > &EMeshArray, const TArray< T > &NuMeshArray, TArray< T > &&AlphaJMeshArray, const FDeformableXPBDCorotatedParams &InParams, const T &NuMesh=(T).3, const bool bRecordMetricIn=false, const bool bDoColoring=true)
 
 FXPBDCorotatedConstraints (const ParticleType &InParticles, const TArray< TVector< int32, 4 > > &InMesh, const T GridN=(T).1, const T &EMesh=(T) 10.0, const T &NuMesh=(T).3)
 
virtual ~FXPBDCorotatedConstraints ()
 
PMatrix< T, 3, 3 > DsInit (const int e, const ParticleType &InParticles) const
 
PMatrix< T, 3, 3 > Ds (const int e, const ParticleType &InParticles) const
 
PMatrix< T, 3, 3 > F (const int e, const ParticleType &InParticles) const
 
PMatrix< T, 3, 3 > ElementDmInv (const int e) const
 
PMatrix< T, 3, 3 > ElementDmInvSave (const int e) const
 
virtual void ApplyInSerial (ParticleType &Particles, const T Dt, const int32 ElementIndex) const
 
void ApplyInSerial (ParticleType &Particles, const T Dt) const
 
void ApplyInParallel (ParticleType &Particles, const T Dt) const
 
TVec4< TVector< T, 3 > > GetPolarGradient (const PMatrix< T, 3, 3 > &Fe, const PMatrix< T, 3, 3 > &Re, const PMatrix< T, 3, 3 > &DmInvT, const T C1) const
 
TVec4< TVector< T, 3 > > GetDeterminantGradient (const PMatrix< T, 3, 3 > &Fe, const PMatrix< T, 3, 3 > &DmInvT) const
 
void ModifyDmInverseFromMuscleLength (const int32 ElemIdx, const T FiberLengthRatio, const PMatrix< T, 3, 3 > &FiberDir, const T ContractionVolumeScale) const
 
void ModifyDmInverseSaveFromInflationVolumeScale (const int32 ElemIdx, const T InflationVolumeScale, const PMatrix< T, 3, 3 > &FiberDir)
 

Public Attributes

TFunction< void(const ParticleType &, const int32, const T, TVec3< T > &)> AddAdditionalRes
 
TFunction< void(const ParticleType &, const int32, const T, Chaos::PMatrix< T, 3, 3 > &)> AddAdditionalHessian
 
TUniquePtr< TArray< int32 > > ParticleColors
 

Protected Member Functions

void InitColor (const ParticleType &Particles)
 
void InitializeCorotatedLambdas ()
 
- Protected Member Functions inherited from Chaos::Softs::FXPBDCorotatedConstraints< T, ParticleType >
void InitColor (const ParticleType &Particles)
 
virtual TVec4< TVector< T, 3 > > GetDeterminantDelta (const ParticleType &Particles, const T Dt, const int32 ElementIndex, const T Tol=(T) 1e-3) const
 
virtual TVec4< TVector< T, 3 > > GetPolarDelta (const ParticleType &Particles, const T Dt, const int32 ElementIndex, const T Tol=(T) 1e-3) const
 

Protected Attributes

TArray< int32Particle2Incident
 
TArray< TArray< int32 > > IncidentElements
 
TArray< TArray< int32 > > IncidentElementsLocal
 
LocalNewtonTol = T(1e-5)
 
TArray< TArray< int32 > > ParticlesPerColor
 
int32 ParticleStartIndex
 
int32 ParticleEndIndex
 
TArray< Chaos::TVector< T, 3 > > xtilde
 
TArray< Chaos::TVector< T, 3 > > X_k_1
 
TArray< Chaos::TVector< T, 3 > > X_k
 
bool bDoQuasistatics = false
 
bool bDoSOR = true
 
OmegaSOR = T(1.6)
 
int32 CurrentIt = 0
 
TFunction< void(const Chaos::PMatrix< T, 3, 3 > &, const T, const T, Chaos::PMatrix< T, 3, 3 > &)> ComputeStress
 
TFunction< void(const Chaos::PMatrix< T, 3, 3 > &, const Chaos::PMatrix< T, 3, 3 > &, const T, const T, const int32, const T, Chaos::PMatrix< T, 3, 3 > &)> ComputeHessianHelper
 
- Protected Attributes inherited from Chaos::Softs::FXPBDCorotatedConstraints< T, ParticleType >
TArray< T > LambdaArray
 
TArray< T > DmInverse
 
TArray< T > DmInverseSave
 
FDeformableXPBDCorotatedParams CorotatedParams
 
Mu
 
Lambda
 
TArray< T > MuElementArray
 
TArray< T > LambdaElementArray
 
TArray< T > AlphaJArray
 
HError
 
TArray< T > HErrorArray
 
bool bRecordMetric
 
bool VariableStiffness = false
 
TArray< TVector< int32, 4 > > MeshConstraints
 
TArray< T > Measure
 
ParticleType RestParticles
 
TArray< int32ConstraintsPerColorStartIndex
 
TArray< T > GError
 

Constructor & Destructor Documentation

◆ FGaussSeidelCorotatedConstraints()

template<typename T , typename ParticleType >
Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::FGaussSeidelCorotatedConstraints ( const ParticleType &  InParticles,
const TArray< TVector< int32, 4 > > &  InMesh,
const TArray< T > &  EMeshArray,
const TArray< T > &  NuMeshArray,
TArray< T > &&  AlphaJMeshArray,
TArray< TArray< int32 > > &&  IncidentElementsIn,
TArray< TArray< int32 > > &&  IncidentElementsLocalIn,
const int32  ParticleStartIndexIn,
const int32  ParticleEndIndexIn,
const bool  bDoQuasistaticsIn = false,
const bool  bDoSORIn = true,
const T  InOmegaSOR = (T)1.6,
const FDeformableXPBDCorotatedParams InParams = FDeformableXPBDCorotatedParams(),
const T &  NuMesh = (T).3,
const bool  bRecordMetricIn = false 
)
inline

◆ ~FGaussSeidelCorotatedConstraints()

template<typename T , typename ParticleType >
virtual Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::~FGaussSeidelCorotatedConstraints ( )
inlinevirtual

Member Function Documentation

◆ AddHyperelasticResidualAndHessian()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::AddHyperelasticResidualAndHessian ( const ParticleType &  Particles,
const int32  ElementIndex,
const int32  ElementIndexLocal,
const T  Dt,
TVec3< T > &  ParticleResidual,
Chaos::PMatrix< T, 3, 3 > &  ParticleHessian 
)
inline

◆ Apply()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::Apply ( ParticleType &  Particles,
const T  Dt 
) const
inline

◆ ApplySOR()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ApplySOR ( ParticleType &  Particles,
const T  Dt 
) const
inline

◆ ComputePerParticleCorotatedHessianSimple()

template<typename T , typename ParticleType >
Chaos::PMatrix< T, 3, 3 > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ComputePerParticleCorotatedHessianSimple ( const int32  p,
const int32  IncidentIndex,
const ParticleType &  Particles,
const T  Dt,
const bool  AddMass = true 
) const
inline

◆ ComputePerParticleResidual()

template<typename T , typename ParticleType >
Chaos::TVector< T, 3 > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ComputePerParticleResidual ( const int32  p,
const int32  IncidentIndex,
const ParticleType &  Particles,
const T  Dt,
const bool  AddMass = true 
) const
inline

◆ GetIncidentElements()

template<typename T , typename ParticleType >
TArray< TArray< int32 > > & Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::GetIncidentElements ( )
inline

◆ GetIncidentElementsLocal()

template<typename T , typename ParticleType >
TArray< TArray< int32 > > & Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::GetIncidentElementsLocal ( )
inline

◆ GetMeshArray()

template<typename T , typename ParticleType >
TArray< TArray< int32 > > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::GetMeshArray ( ) const
inline

◆ GetMeshConstraints()

template<typename T , typename ParticleType >
TArray< TVector< int32, 4 > > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::GetMeshConstraints ( ) const
inline

◆ Init() [1/2]

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::Init ( ) const
inlineoverridevirtual

◆ Init() [2/2]

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::Init ( const T  Dt,
const ParticleType &  Particles 
) const
inline

◆ InitColor()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::InitColor ( const ParticleType &  Particles)
inlineprotected

◆ InitializeCorotatedLambdas()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::InitializeCorotatedLambdas ( )
inlineprotected

◆ SetParticlesPerColor()

template<typename T , typename ParticleType >
void Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::SetParticlesPerColor ( TArray< TArray< int32 > > &&  InParticlesPerColor)
inline

Member Data Documentation

◆ AddAdditionalHessian

template<typename T , typename ParticleType >
TFunction<void(const ParticleType&, const int32, const T, Chaos::PMatrix<T, 3, 3>&)> Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::AddAdditionalHessian

◆ AddAdditionalRes

template<typename T , typename ParticleType >
TFunction<void(const ParticleType&, const int32, const T, TVec3<T>&)> Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::AddAdditionalRes

◆ bDoQuasistatics

template<typename T , typename ParticleType >
bool Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::bDoQuasistatics = false
protected

◆ bDoSOR

template<typename T , typename ParticleType >
bool Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::bDoSOR = true
protected

◆ ComputeHessianHelper

template<typename T , typename ParticleType >
TFunction<void(const Chaos::PMatrix<T, 3, 3>&, const Chaos::PMatrix<T, 3, 3>&, const T, const T, const int32, const T, Chaos::PMatrix<T, 3, 3>&)> Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ComputeHessianHelper
protected

◆ ComputeStress

template<typename T , typename ParticleType >
TFunction<void(const Chaos::PMatrix<T, 3, 3>&, const T, const T, Chaos::PMatrix<T, 3, 3>& )> Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ComputeStress
protected

◆ CurrentIt

template<typename T , typename ParticleType >
int32 Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::CurrentIt = 0
mutableprotected

◆ IncidentElements

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::IncidentElements
protected

◆ IncidentElementsLocal

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::IncidentElementsLocal
protected

◆ LocalNewtonTol

template<typename T , typename ParticleType >
T Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::LocalNewtonTol = T(1e-5)
protected

◆ OmegaSOR

template<typename T , typename ParticleType >
T Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::OmegaSOR = T(1.6)
protected

◆ Particle2Incident

template<typename T , typename ParticleType >
TArray<int32> Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::Particle2Incident
protected

◆ ParticleColors

template<typename T , typename ParticleType >
TUniquePtr<TArray<int32> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ParticleColors

◆ ParticleEndIndex

template<typename T , typename ParticleType >
int32 Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ParticleEndIndex
protected

◆ ParticlesPerColor

template<typename T , typename ParticleType >
TArray<TArray<int32> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ParticlesPerColor
protected

◆ ParticleStartIndex

template<typename T , typename ParticleType >
int32 Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::ParticleStartIndex
protected

◆ X_k

template<typename T , typename ParticleType >
TArray<Chaos::TVector<T, 3> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::X_k
mutableprotected

◆ X_k_1

template<typename T , typename ParticleType >
TArray<Chaos::TVector<T, 3> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::X_k_1
mutableprotected

◆ xtilde

template<typename T , typename ParticleType >
TArray<Chaos::TVector<T, 3> > Chaos::Softs::FGaussSeidelCorotatedConstraints< T, ParticleType >::xtilde
mutableprotected

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