Particulate DEM class#

struct Particle_structure#

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

Int nParticle = 0#
Real domain[RANGE_SIZE] = {0.0, 0.0, 0.0, 0.0}#
std::vector<particle_type> particle#
std::vector<Vector3> velocity#
std::vector<Vector3> accelerator#
std::vector<Vector3> force#
std::vector<Vector3> conforce#
std::vector<Vector3> extforce#
Real unbalanceforce = 0.0#
Real MaxRadius = 0.0#
Real MinRadius = 0.0#
Real MinMass = 0.0#
Real max_velocity = 0.0#
Int maxparticles = 0#
struct particle_type#

Public Functions

particle_type() = default#

Public Members

Vector2 coord#
Vector2 coord0#
Real angle = 0.0#
bool indomain = true#
Real radius = 0.0#
Real mass = 0.0#
Real interia = 0.0#
Int matid = 0#
Int bouid = -1#
class ParticleContactModel : public OpenFdemAbstract, public Contact_utils#

Subclassed by ns_particle::PContactModule, ns_particle::WallContactModule

Public Functions

inline ParticleContactModel()#
inline ~ParticleContactModel()#

Public Static Functions

static inline Vector3 p2pStandardContactforce(const Int ball1, const Int ball2, const Int con, const UInt umat, Particle particle, PContact pcontact, Solidmat solidmat)#
static inline Vector3 p2pBondContactforce(const Int ball1, const Int ball2, const Int con, const UInt umat, Particle particle, PContact pcontact, Solidmat solidmat)#
static inline Vector3 p2pRrotationContactforce(const Int ball1, const Int ball2, const Int con, const UInt umat, Particle particle, PContact pcontact, Solidmat solidmat)#
static inline Vector3 p2wContactforce(const Int ball, const Int ele, const Int edge, const Int con, const UInt umat, Particle particle, Element element, PContact pcontact, Solidmat solidmat)#
class ParticleModule : public OpenFdemAbstract, public OpenFDEMmessage, public GeometryModule#
#include <particle_module.h>

Public Functions

inline ParticleModule()#
inline ~ParticleModule()#

Public Static Functions

static void createRandomParticles(Geometry geometry)#
static void createSingleParticle(Geometry geometry, UInt nParameters, char **parameters)#
static void PushParticles(Particle particle, Geometry geometry)#
static void PushParticlesGroup(Particle particle, Geometry geometry, Group group)#
static void generateRegularParticles(Geometry geometry, UInt nParameters, char **parameters)#
static inline Real getParticleMass(Real radius, Real density)#
static inline Real getParticleInteria(Real radius, Real density)#
static inline Vector3 getForcefromLocal2global(Vector3 contactforce, Vector2 norm, Real radius)#
struct PContact_structure#

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

Int _particleSize = 0#
Int nP2PContact = 0#
Int nP2WContact = 0#
std::vector<pContact_type> P2PContact#
std::vector<wContact_type> P2WContact#
std::vector<bool> potentionalParticle#
Real contact_buffer = 1.0#
Real contact_trigger = 200.0#
Real gap = 0.0#
Int detectInterval = 100#
Int detection_count = 0#
Int pcontact_count = 0#
Int wcontact_count = 0#
struct pContact_type#

Public Functions

pContact_type() = default#
void resize(UInt ielem, UInt jelem, Particle_structure *particle, Solid_mat_structure *solidmat)#
void clear()#

Public Members

UInt con_n = 0#
Int head = -2#
std::vector<Int> hold#
std::vector<Real> overlap#
std::vector<Vector3> dis#
std::vector<Vector3> vel#
std::vector<Vector3> force#
std::vector<Vector2> norm#
std::vector<Int> target#
std::vector<short> state#
std::vector<short> mat#
class PContactModule : public OpenFdemAbstract, public OpenFDEMmessage, public ns_particle::ParticleContactModel#

Public Functions

inline PContactModule()#
inline ~PContactModule()#

Public Static Functions

static void P2PcontactForceupdate(General general, Particle particle, Solidmat solidmat, PContact pcontact)#
static void clearParticleContactforce(General general, Particle particle)#
static void contactDetectionCELL(PContact pcontact, Contact contact, General general, Element element, Cohelement cohelement, Particle particle, Nodal nodal, Solidmat solidmat)#
static inline Vector3 getinverseforce(Vector3 force)#
static inline void getP2Pdis(const Int ball1, const Int ball2, const Int con, Particle particle, PContact pcontact, General general)#
static inline void getP2PNormal(const Int ball1, const Int ball2, const Int con, Particle particle, PContact pcontact)#
static inline void getP2Pvel(const Int ball1, const Int ball2, const Int con, Particle particle, PContact pcontact)#
static inline void updateParticleContactForce(Particle particle, const Int iparticle, Vector3 pforce)#
class RunParticleModule : public OpenFdemAbstract, public OpenFDEMmessage, public GeometryModule#

Public Functions

inline RunParticleModule()#
inline ~RunParticleModule()#

Public Static Functions

static inline void Openfdem_particle(Openfdem openfdem)#
class WallContactModule : public OpenFdemAbstract, public OpenFDEMmessage, public ns_particle::ParticleContactModel#

Public Functions

inline WallContactModule()#
inline ~WallContactModule()#

Public Static Functions

static void contactWallForceupdate(General general, Particle particle, Element element, Nodal nodal, Solidmat solidmat, PContact pcontact)#
static inline Real getP2WNormal(const Int ball, const Int ele, const Int con, const Int edge, Element element, Nodal nodal, Particle particle, PContact pcontact)#
static inline void getP2Wdis(const Int ball, const Int ele, const Int con, const Int edge, Particle particle, Element element, PContact pcontact, General general)#
static inline void getP2Wvel(const Int ball, const Int ele, const Int con, const Int edge, Real rot, Particle particle, Nodal nodal, Element element, PContact pcontact)#
static inline void updateNodeContactForce(Nodal nodal, const Int in, Vector3 wAforce)#
struct wContact_type#

Public Functions

wContact_type() = default#
void resize(UInt ielem, UInt jelem, Particle_structure *particle, Element_structure *element, Solid_mat_structure *solidmat)#
void clear()#

Public Members

UInt con_n = 0#
Int head = -2#
std::vector<Int> hold#
std::vector<Vector3> dis[POLYGON_NODE_SIZE]#
std::vector<Vector3> vel[POLYGON_NODE_SIZE]#
std::vector<Vector2> norm[POLYGON_NODE_SIZE]#
std::vector<Int> target#
std::vector<short> mat#
std::vector<Real> ratio[POLYGON_NODE_SIZE]#
namespace ns_common
namespace ns_contact
namespace ns_geometry
namespace ns_particle#
file openfdem_particle.h
#include “common/openfdem_common.h”

Typedefs

typedef struct Particle_structure *Particle#
file openfdem_particle_module.h
#include “common/openfdem_abstract.h”
#include “external/gsl/gsl_randist.h”
#include “external/gsl/gsl_rng.h”
#include “geometry/openfdem_geometry_module.h”
#include “solver/openfdem.h”
file openfdem_pContact.h
#include “common/openfdem_common.h”

Typedefs

typedef struct PContact_structure *PContact#
file particle_module.h
#include “common/openfdem_abstract.h”
#include “common/openfdem_message.h”
#include “external/gsl/gsl_randist.h”
#include “external/gsl/gsl_rng.h”
#include “geometry/openfdem_geometry_module.h”
#include “solver/openfdem.h”
file particlesContact_module.h
#include “common/openfdem_abstract.h”
#include “contact/contact_utils/contact_utils.h”
#include “external/gsl/gsl_randist.h”
#include “external/gsl/gsl_rng.h”
#include “solver/openfdem.h”
file particlesContactModel.h
#include “common/openfdem_abstract.h”
#include “contact/contact_utils/contact_utils.h”
#include “solver/openfdem.h”
file wallContact_module.h
#include “common/openfdem_abstract.h”
#include “contact/contact_utils/contact_utils.h”
#include “external/gsl/gsl_randist.h”
#include “external/gsl/gsl_rng.h”
#include “solver/openfdem.h”
dir particles
dir src