11#ifndef PARTICLE_BASEPARTICLE_H
12#define PARTICLE_BASEPARTICLE_H
73 std::shared_ptr<util::geometry::GeomObject>
geom,
75 std::shared_ptr<fe::Mesh>
mesh,
959 std::shared_ptr<particle::RefParticle>
d_rp_p;
962 std::shared_ptr<util::geometry::GeomObject>
d_geom_p;
Collection of methods and database related to peridynamic material.
A class to store particle geometry, nodal discretization, and methods.
void setX(size_t i, int dof, double x)
Set specific current coordinate of the node.
void addMx(size_t i, const double &mx)
Add to weighted-volume (mx) of the node.
const util::Point & getXRef(size_t i) const
Get reference coordinate of the node.
void addU(size_t i, int dof, double u)
Add to displacement of the node.
void setFixLocal(size_t i, const unsigned int &dof, const bool &flag)
Set fixity of the node given node's local id.
void setThetax(size_t i, const double &thetax)
Set volumetric deformation (thetax) of the node.
double getHorizon() const
Get horizon.
const util::Point & getXRefLocal(size_t i) const
Get reference coordinate of the node.
double & getMxLocal(size_t i)
Get weighted-volume (mx) of the node given node's local id.
util::Point & getXRef(size_t i)
Get reference coordinate of the node.
double getMeshSize() const
Get mesh size.
particle::ParticleTransform d_tform
Transformation related data.
double d_Rc
Contact radius for contact between internal nodes of particle.
const double & getThetax(size_t i) const
Get volumetric deformation (thetax) of the node.
void addF(size_t i, int dof, double f)
Add to force of the node.
void addULocal(size_t i, const util::Point &u)
Add to displacement of the node given node's local id.
void setVol(size_t i, const double &vol)
Set volume of the node.
util::Point & getVLocal(size_t i)
Get velocity of the node given node's local id.
void addFLocal(size_t i, const util::Point &f)
Add to force of the node given node's local id.
void addMxLocal(size_t i, const double &mx)
Add to weighted-volume (mx) of the node given node's local id.
const double & getThetaxLocal(size_t i) const
Get volumetric deformation (thetax) of the node.
const util::Point & getUCenter() const
Get displacement of center node.
std::shared_ptr< util::geometry::GeomObject > d_geom_p
Geometrical object defining this particle.
bool d_allDofsConstrained
Specify if all dofs are constrained so we do not update displacement, velocity, and force data.
bool d_computeForce
Specify if we compute force.
double getParticleRadius() const
Get radius of reference particle.
void setVLocal(size_t i, const util::Point &v)
Set velocity of the node given node's local id.
double & getThetaxLocal(size_t i)
Get volumetric deformation (thetax) of the node given node's local id.
std::string getType() const
Get type of this object.
size_t d_globQuadEnd
Id of last node of this object in global quadrature data list, e.g., strain in elements at quadrature...
util::Point & getVCenter()
Get velocity of center node.
void addThetax(size_t i, const double &thetax)
Add to volumetric deformation (thetax) of the node.
void addXRefLocal(size_t i, int dof, double x)
Add to specific reference coordinate of the node given node's local id.
void setXRef(size_t i, const util::Point &x)
Set reference coordinate of the node.
const util::Point & getU(size_t i) const
Get displacement of the node.
void setFLocal(size_t i, int dof, double f)
Set force of the node given node's local id.
size_t getId() const
Get id.
void addVol(size_t i, const double &vol)
Add to volume of the node.
double d_pRadius
Particle radius.
void addThetaxLocal(size_t i, const double &thetax)
Add to volumetric deformation (thetax) of the node given node's local id.
double & getThetax(size_t i)
Get volumetric deformation (thetax) of the node.
void setFLocal(size_t i, const util::Point &f)
Set force of the node given node's local id.
double & getVol(size_t i)
Get volume of the node.
void setF(size_t i, int dof, double f)
Set force of the node.
size_t getNumNodes() const
Get the number of nodes.
void setXRefLocal(size_t i, int dof, double x)
Set specific reference coordinate of the node given node's local id.
void setMxLocal(size_t i, const double &mx)
Set weighted-volume (mx) of the node given node's local id.
void setF(size_t i, const util::Point &f)
Set force of the node.
void addULocal(size_t i, int dof, double u)
Add to displacement of the node given node's local id.
void setMx(size_t i, const double &mx)
Set weighted-volume (mx) of the node.
double getDensity() const
Get density.
const fe::Mesh & getMesh() const
Get reference to mesh object.
util::Point & getU(size_t i)
Get displacement of the node.
size_t d_numNodes
Number of nodes in this particle.
const util::Point & getX(size_t i) const
Get current coordinate of the node.
void addX(size_t i, int dof, double x)
Add to specific current coordinate of the node.
const util::Point & getF(size_t i) const
Get force of the node.
void print(int nt=0, int lvl=0) const
Prints the information about the object.
size_t d_typeId
Id of this particle in the category (for example if this is a wall, what is its id in vector of walls...
void addXRefLocal(size_t i, const util::Point &x)
Add to reference coordinate of the node given node's local id.
const std::shared_ptr< fe::Mesh > & getMeshP() const
Get pointer to mesh object.
const util::Point & getVCenter() const
Get velocity of center node.
size_t d_globStart
Id of first node of this object in global node list.
void addVLocal(size_t i, const util::Point &v)
Add to velocity of the node given node's local id.
util::Point & getULocal(size_t i)
Get displacement of the node given node's local id.
void addXLocal(size_t i, int dof, double x)
Add to specific current coordinate of the node given node's local id.
const double & getMx(size_t i) const
Get weighted-volume (mx) of the node.
double & getMx(size_t i)
Get weighted-volume (mx) of the node.
size_t getCenterNodeId() const
Get id of center node of particle.
std::shared_ptr< model::ModelData > d_modelData_p
Reference to model class.
const util::Point & getFLocal(size_t i) const
Get force of the node.
uint8_t & getFix(size_t i)
Get fixity of the node.
void setX(size_t i, const util::Point &x)
Set current coordinate of the node.
void setXLocal(size_t i, const util::Point &x)
Set current coordinate of the node given node's local id.
void addF(size_t i, const util::Point &f)
Add to force of the node.
void setULocal(size_t i, const util::Point &u)
Set displacement of the node given node's local id.
void setXLocal(size_t i, int dof, double x)
Set specific current coordinate of the node given node's local id.
const double & getVolLocal(size_t i) const
Get volume of the node.
void setVolLocal(size_t i, const double &vol)
Set volume of the node given node's local id.
void addFLocal(size_t i, int dof, double f)
Add to force of the node given node's local id.
bool d_isWall
Is this particle actually a wall?
size_t d_globQuadStart
Id of first node of this object in global quadrature data list, e.g., strain in elements at quadratur...
void setULocal(size_t i, int dof, double u)
Set displacement of the node given node's local id.
void addV(size_t i, int dof, double v)
Add to velocity of the node.
void setU(size_t i, int dof, double u)
Set displacement of the node.
size_t getNodeId(size_t i_loc) const
Get global id of node given the local id of node in this object.
const material::Material * getMaterial() const
Get type of this object.
util::Point & getX(size_t i)
Get current coordinate of the node.
size_t d_id
Id of this particle in all particles list.
util::Point & getF(size_t i)
Get force of the node.
double & getVolLocal(size_t i)
Get volume of the node given node's local id.
std::string d_particleDescription
Particle information. E.g., "rigid". If nothing specific is available, value will be empty string.
util::Point & getUCenter()
Get displacement of center node.
void setV(size_t i, int dof, double v)
Set velocity of the node.
const util::Point & getV(size_t i) const
Get velocity of the node.
util::Point & getXCenter()
Get current coordinate of center node.
material::Material * getMaterial()
Get pointer to material object.
const util::Point & getXCenter() const
Get current coordinate of center node.
size_t d_dim
Dimension of this particle.
void setFix(size_t i, const unsigned int &dof, const bool &flag)
Set fixity of the node.
const util::Point & getULocal(size_t i) const
Get displacement of the node given node's local id.
void setThetaxLocal(size_t i, const double &thetax)
Set volumetric deformation (thetax) of the node given node's local id.
void addXLocal(size_t i, const util::Point &x)
Add to current coordinate of the node given node's local id.
size_t d_zoneId
Specify zone to which this particle belongs to.
std::shared_ptr< fe::Mesh > d_mesh_p
Pointer to mesh on reference particle.
const uint8_t & getFixLocal(size_t i) const
Get fixity of the node.
void setV(size_t i, const util::Point &v)
Set velocity of the node.
void addXRef(size_t i, const util::Point &x)
Add reference coordinate of the node.
void addVolLocal(size_t i, const double &vol)
Add to volume of the node given node's local id.
util::Point & getV(size_t i)
Get velocity of the node.
std::shared_ptr< fe::Mesh > & getMeshP()
Get pointer to mesh object.
void addX(size_t i, const util::Point &x)
Add current coordinate of the node.
util::Point & getXLocal(size_t i)
Get current coordinate of the node given node's local id.
int getTypeIndex() const
Get type (in integer format) of this object.
size_t getDimension() const
Get id among the group of object in the same type as this.
util::Point & getXRefLocal(size_t i)
Get reference coordinate of the node given node's local id.
const util::Point & getXLocal(size_t i) const
Get current coordinate of the node.
uint8_t & getFixLocal(size_t i)
Get fixity of the node given node's local id.
void setXRef(size_t i, int dof, double x)
Set specific reference coordinate of the node.
void setU(size_t i, const util::Point &u)
Set displacement of the node.
void addVLocal(size_t i, int dof, double v)
Add to velocity of the node given node's local id.
void setVLocal(size_t i, int dof, double v)
Set velocity of the node given node's local id.
util::Point & getFLocal(size_t i)
Get force of the node given node's local id.
fe::Mesh & getMesh()
Get reference to mesh object.
const double & getMxLocal(size_t i) const
Get weighted-volume (mx) of the node.
void addXRef(size_t i, int dof, double x)
Add specific reference coordinate of the node.
std::string d_type
particle type, e.g., particle or wall
const uint8_t & getFix(size_t i) const
Get fixity of the node.
void addV(size_t i, const util::Point &v)
Add to velocity of the node.
size_t d_globEnd
Id of last node of this object in global node list.
const util::Point & getVLocal(size_t i) const
Get velocity of the node.
void setXRefLocal(size_t i, const util::Point &x)
Set reference coordinate of the node given node's local id.
void addU(size_t i, const util::Point &u)
Add to displacement of the node.
std::string printStr(int nt=0, int lvl=0) const
Returns the string containing printable information about the object.
std::unique_ptr< material::Material > d_material_p
Pointer to peridynamic material object.
double d_Kn
Normal contact coefficient for internal contact.
const double & getVol(size_t i) const
Get volume of the node.
std::shared_ptr< particle::RefParticle > d_rp_p
Pointer to reference particle.
Collection of methods and data related to particle object.
Structure to read and store material related data.
A struct that stores transformation parameters and provides method to transform the particle....
A structure to represent 3d vectors.