KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Public Member Functions | Protected Member Functions | Friends | List of all members
Kratos::DEM_D_Linear_viscous_Coulomb Class Reference

#include <DEM_D_Linear_viscous_Coulomb_CL.h>

Inheritance diagram for Kratos::DEM_D_Linear_viscous_Coulomb:
Collaboration diagram for Kratos::DEM_D_Linear_viscous_Coulomb:

Public Member Functions

 KRATOS_CLASS_POINTER_DEFINITION (DEM_D_Linear_viscous_Coulomb)
 
 DEM_D_Linear_viscous_Coulomb ()
 
 ~DEM_D_Linear_viscous_Coulomb ()
 
std::string GetTypeOfLaw () override
 
void Check (Properties::Pointer pProp) const override
 
DEMDiscontinuumConstitutiveLaw::Pointer Clone () const override
 
std::unique_ptr< DEMDiscontinuumConstitutiveLawCloneUnique () override
 
void InitializeContact (SphericParticle *const element1, SphericParticle *const element2, const double indentation) override
 
void InitializeContactWithFEM (SphericParticle *const element, Condition *const wall, const double indentation, const double ini_delta=0.0) override
 
void CalculateForces (const ProcessInfo &r_process_info, const double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double LocalDeltDisp[3], double LocalRelVel[3], double indentation, double previous_indentation, double ViscoDampingLocalContactForce[3], double &cohesive_force, SphericParticle *element1, SphericParticle *element2, bool &sliding, double LocalCoordSystem[3][3]) override
 
void CalculateForcesWithFEM (const ProcessInfo &r_process_info, const double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double LocalDeltDisp[3], double LocalRelVel[3], double indentation, double previous_indentation, double ViscoDampingLocalContactForce[3], double &cohesive_force, SphericParticle *const element, Condition *const wall, bool &sliding) override
 
double CalculateNormalForce (SphericParticle *const element1, SphericParticle *const element2, const double indentation, double LocalCoordSystem[3][3]) override
 
double CalculateNormalForce (SphericParticle *const element, Condition *const wall, const double indentation) override
 
double CalculateNormalForce (const double indentation) override
 
double CalculateCohesiveNormalForce (SphericParticle *const element1, SphericParticle *const element2, const double indentation) override
 
double CalculateCohesiveNormalForceWithFEM (SphericParticle *const element, Condition *const wall, const double indentation) override
 
PropertiesGetPropertiesOfThisContact (SphericParticle *const element, SphericParticle *const neighbour)
 
PropertiesGetPropertiesOfThisContact (SphericParticle *const element, Condition *const neighbour)
 
template<class NeighbourClassType >
void CalculateTangentialForceWithNeighbour (const double normal_contact_force, const double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double ViscoDampingLocalContactForce[3], const double LocalDeltDisp[3], const double LocalRelVel[3], bool &sliding, SphericParticle *const element, NeighbourClassType *const neighbour, double indentation, double previous_indentation, double &modulus_of_elastic_shear_force, double &maximum_admissible_shear_force)
 
void CalculateViscoDampingForce (double LocalRelVel[3], double ViscoDampingLocalContactForce[3], SphericParticle *const element1, SphericParticle *const element2)
 
void CalculateViscoDampingForceWithFEM (double LocalRelVel[3], double ViscoDampingLocalContactForce[3], SphericParticle *const element, Condition *const wall)
 
void CalculateElasticEnergyDEM (double &elastic_energy, double indentation, double LocalElasticContactForce[3])
 
void CalculateInelasticFrictionalEnergyDEM (double &inelastic_frictional_energy, double &AuxElasticShearForce, double LocalElasticContactForce[3])
 
void CalculateInelasticViscodampingEnergyDEM (double &inelastic_viscodamping_energy, double ViscoDampingLocalContactForce[3], double LocalDeltDisp[3])
 
void CalculateElasticEnergyFEM (double &elastic_energy, double indentation, double LocalElasticContactForce[3])
 
void CalculateInelasticFrictionalEnergyFEM (double &inelastic_frictional_energy, double &AuxElasticShearForce, double LocalElasticContactForce[3])
 
void CalculateInelasticViscodampingEnergyFEM (double &inelastic_viscodamping_energy, double ViscoDampingLocalContactForce[3], double LocalDeltDisp[3])
 
virtual double CalculateNormalForce (const double indentation)
 
virtual double CalculateNormalForce (SphericParticle *const element1, SphericParticle *const element2, const double indentation, double LocalCoordSystem[3][3])
 
virtual double CalculateNormalForce (SphericParticle *const element, Condition *const wall, const double indentation)
 
- Public Member Functions inherited from Kratos::DEMDiscontinuumConstitutiveLaw
 KRATOS_CLASS_POINTER_DEFINITION (DEMDiscontinuumConstitutiveLaw)
 
 DEMDiscontinuumConstitutiveLaw ()
 
 DEMDiscontinuumConstitutiveLaw (const DEMDiscontinuumConstitutiveLaw &rReferenceDiscontinuumConstitutiveLaw)
 
virtual void SetConstitutiveLawInProperties (Properties::Pointer pProp, bool verbose=true)
 
virtual ~DEMDiscontinuumConstitutiveLaw ()
 
- Public Member Functions inherited from Kratos::Flags
Flagsoperator= (Flags const &rOther)
 Assignment operator. More...
 
 operator bool () const
 
Flags operator~ () const
 
bool operator! () const
 
void AssignFlags (Flags const &rOther)
 
void Set (const Flags ThisFlag)
 
void Set (const Flags ThisFlag, bool Value)
 
void Reset (const Flags ThisFlag)
 
void Flip (const Flags ThisFlag)
 
void SetPosition (IndexType Position, bool Value=true)
 
bool GetPosition (IndexType Position) const
 
void FlipPosition (IndexType Position)
 
void ClearPosition (IndexType Position)
 
void Clear ()
 
Flags AsFalse () const
 
bool Is (Flags const &rOther) const
 
bool IsDefined (Flags const &rOther) const
 
bool IsNot (Flags const &rOther) const
 
bool IsNotDefined (Flags const &rOther) const
 
virtual std::string Info () const
 Turn back information as a string. More...
 
virtual void PrintInfo (std::ostream &rOStream) const
 Print information about this object. More...
 
virtual void PrintData (std::ostream &rOStream) const
 Print object's data. More...
 
 KRATOS_CLASS_POINTER_DEFINITION (Flags)
 Pointer definition of Flags. More...
 
const Flagsoperator|= (const Flags &Other)
 
const Flagsoperator&= (const Flags &Other)
 
 Flags ()
 Default constructor. More...
 
 Flags (Flags const &rOther)
 Copy constructor. More...
 
virtual ~Flags ()
 Destructor. More...
 

Protected Member Functions

std::size_t GetElementId (SphericParticle *element)
 

Friends

class Serializer
 

Additional Inherited Members

- Public Types inherited from Kratos::Flags
enum  FlagsList {
  Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 ,
  Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 ,
  Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 ,
  Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 ,
  Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 ,
  Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 ,
  Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 ,
  Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30
}
 
typedef int64_t BlockType
 
typedef int64_t FlagType
 
typedef std::size_t IndexType
 
- Static Public Member Functions inherited from Kratos::Flags
static const Flags AllDefined ()
 
static const Flags AllTrue ()
 
static Flags Create (IndexType ThisPosition, bool Value=true)
 
- Public Attributes inherited from Kratos::DEMDiscontinuumConstitutiveLaw
double mKn
 
double mKt
 

Constructor & Destructor Documentation

◆ DEM_D_Linear_viscous_Coulomb()

Kratos::DEM_D_Linear_viscous_Coulomb::DEM_D_Linear_viscous_Coulomb ( )
inline

◆ ~DEM_D_Linear_viscous_Coulomb()

Kratos::DEM_D_Linear_viscous_Coulomb::~DEM_D_Linear_viscous_Coulomb ( )
inline

Member Function Documentation

◆ CalculateCohesiveNormalForce()

double Kratos::DEM_D_Linear_viscous_Coulomb::CalculateCohesiveNormalForce ( SphericParticle *const  element1,
SphericParticle *const  element2,
const double  indentation 
)
overridevirtual

◆ CalculateCohesiveNormalForceWithFEM()

double Kratos::DEM_D_Linear_viscous_Coulomb::CalculateCohesiveNormalForceWithFEM ( SphericParticle *const  element,
Condition *const  wall,
const double  indentation 
)
overridevirtual

◆ CalculateElasticEnergyDEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateElasticEnergyDEM ( double elastic_energy,
double  indentation,
double  LocalElasticContactForce[3] 
)

◆ CalculateElasticEnergyFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateElasticEnergyFEM ( double elastic_energy,
double  indentation,
double  LocalElasticContactForce[3] 
)

◆ CalculateForces()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateForces ( const ProcessInfo r_process_info,
const double  OldLocalElasticContactForce[3],
double  LocalElasticContactForce[3],
double  LocalDeltDisp[3],
double  LocalRelVel[3],
double  indentation,
double  previous_indentation,
double  ViscoDampingLocalContactForce[3],
double cohesive_force,
SphericParticle element1,
SphericParticle element2,
bool sliding,
double  LocalCoordSystem[3][3] 
)
overridevirtual

◆ CalculateForcesWithFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateForcesWithFEM ( const ProcessInfo r_process_info,
const double  OldLocalElasticContactForce[3],
double  LocalElasticContactForce[3],
double  LocalDeltDisp[3],
double  LocalRelVel[3],
double  indentation,
double  previous_indentation,
double  ViscoDampingLocalContactForce[3],
double cohesive_force,
SphericParticle *const  element,
Condition *const  wall,
bool sliding 
)
overridevirtual

◆ CalculateInelasticFrictionalEnergyDEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateInelasticFrictionalEnergyDEM ( double inelastic_frictional_energy,
double AuxElasticShearForce,
double  LocalElasticContactForce[3] 
)

◆ CalculateInelasticFrictionalEnergyFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateInelasticFrictionalEnergyFEM ( double inelastic_frictional_energy,
double AuxElasticShearForce,
double  LocalElasticContactForce[3] 
)

◆ CalculateInelasticViscodampingEnergyDEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateInelasticViscodampingEnergyDEM ( double inelastic_viscodamping_energy,
double  ViscoDampingLocalContactForce[3],
double  LocalDeltDisp[3] 
)

◆ CalculateInelasticViscodampingEnergyFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateInelasticViscodampingEnergyFEM ( double inelastic_viscodamping_energy,
double  ViscoDampingLocalContactForce[3],
double  LocalDeltDisp[3] 
)

◆ CalculateNormalForce() [1/6]

double Kratos::DEMDiscontinuumConstitutiveLaw::CalculateNormalForce

◆ CalculateNormalForce() [2/6]

double Kratos::DEM_D_Linear_viscous_Coulomb::CalculateNormalForce ( const double  indentation)
overridevirtual

Reimplemented from Kratos::DEMDiscontinuumConstitutiveLaw.

Reimplemented in Kratos::DEM_D_Quadratic.

◆ CalculateNormalForce() [3/6]

double Kratos::DEMDiscontinuumConstitutiveLaw::CalculateNormalForce

◆ CalculateNormalForce() [4/6]

double Kratos::DEM_D_Linear_viscous_Coulomb::CalculateNormalForce ( SphericParticle *const  element,
Condition *const  wall,
const double  indentation 
)
overridevirtual

◆ CalculateNormalForce() [5/6]

double Kratos::DEMDiscontinuumConstitutiveLaw::CalculateNormalForce

◆ CalculateNormalForce() [6/6]

double Kratos::DEM_D_Linear_viscous_Coulomb::CalculateNormalForce ( SphericParticle *const  element1,
SphericParticle *const  element2,
const double  indentation,
double  LocalCoordSystem[3][3] 
)
overridevirtual

◆ CalculateTangentialForceWithNeighbour()

template<class NeighbourClassType >
void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateTangentialForceWithNeighbour ( const double  normal_contact_force,
const double  OldLocalElasticContactForce[3],
double  LocalElasticContactForce[3],
double  ViscoDampingLocalContactForce[3],
const double  LocalDeltDisp[3],
const double  LocalRelVel[3],
bool sliding,
SphericParticle *const  element,
NeighbourClassType *const  neighbour,
double  indentation,
double  previous_indentation,
double modulus_of_elastic_shear_force,
double maximum_admissible_shear_force 
)
inline

◆ CalculateViscoDampingForce()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateViscoDampingForce ( double  LocalRelVel[3],
double  ViscoDampingLocalContactForce[3],
SphericParticle *const  element1,
SphericParticle *const  element2 
)

◆ CalculateViscoDampingForceWithFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::CalculateViscoDampingForceWithFEM ( double  LocalRelVel[3],
double  ViscoDampingLocalContactForce[3],
SphericParticle *const  element,
Condition *const  wall 
)

◆ Check()

void Kratos::DEM_D_Linear_viscous_Coulomb::Check ( Properties::Pointer  pProp) const
overridevirtual

◆ Clone()

DEMDiscontinuumConstitutiveLaw::Pointer Kratos::DEM_D_Linear_viscous_Coulomb::Clone ( ) const
overridevirtual

◆ CloneUnique()

std::unique_ptr< DEMDiscontinuumConstitutiveLaw > Kratos::DEM_D_Linear_viscous_Coulomb::CloneUnique ( )
overridevirtual

◆ GetElementId()

std::size_t Kratos::DEM_D_Linear_viscous_Coulomb::GetElementId ( SphericParticle element)
protected

◆ GetPropertiesOfThisContact() [1/2]

Properties & Kratos::DEM_D_Linear_viscous_Coulomb::GetPropertiesOfThisContact ( SphericParticle *const  element,
Condition *const  neighbour 
)

◆ GetPropertiesOfThisContact() [2/2]

Properties & Kratos::DEM_D_Linear_viscous_Coulomb::GetPropertiesOfThisContact ( SphericParticle *const  element,
SphericParticle *const  neighbour 
)

◆ GetTypeOfLaw()

std::string Kratos::DEM_D_Linear_viscous_Coulomb::GetTypeOfLaw ( )
overridevirtual

◆ InitializeContact()

void Kratos::DEM_D_Linear_viscous_Coulomb::InitializeContact ( SphericParticle *const  element1,
SphericParticle *const  element2,
const double  indentation 
)
overridevirtual

◆ InitializeContactWithFEM()

void Kratos::DEM_D_Linear_viscous_Coulomb::InitializeContactWithFEM ( SphericParticle *const  element,
Condition *const  wall,
const double  indentation,
const double  ini_delta = 0.0 
)
overridevirtual

◆ KRATOS_CLASS_POINTER_DEFINITION()

Kratos::DEM_D_Linear_viscous_Coulomb::KRATOS_CLASS_POINTER_DEFINITION ( DEM_D_Linear_viscous_Coulomb  )

Friends And Related Function Documentation

◆ Serializer

friend class Serializer
friend

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