NetDEM v1.0
|
A class used to model a membrane wall in a DEM simulation. More...
#include <membrane_wall.hpp>
Public Member Functions | |
MembraneWall () | |
Default constructor for MembraneWall class. | |
MembraneWall (double radius, double height) | |
Constructor for MembraneWall class with specified radius and height. | |
MembraneWall (double radius, double height, double mesh_size) | |
Constructor for MembraneWall class with specified radius, height, and mesh size. | |
MembraneWall (double radius, double height, double mesh_size, double center_x, double center_y, double center_z) | |
Constructor for MembraneWall class with specified radius, height, mesh size, and center coordinates. | |
void | SetRootPath (std::string const &root_path) |
Sets the root path for saving membrane wall data. | |
void | SetDataType (std::string const &data_type) |
Sets the data type for saving membrane wall data. | |
void | SetSaveByTime (double interval) |
Sets the time interval for saving membrane wall data. | |
void | SetSaveByCycles (double interval) |
Sets the cycle interval for saving membrane wall data. | |
void | SetDimensions (double r, double h) |
Sets the radius and height of the membrane wall. | |
Modifier * | Clone () const override |
Clones the current MembraneWall instance. | |
void | Init (Simulation *sim) override |
Initializes the MembraneWall instance. | |
void | SetPressure (double pressure) |
Sets the pressure applied to the membrane wall. | |
void | Execute () override |
Executes the MembraneWall instance. | |
Public Member Functions inherited from netdem::Modifier | |
Modifier () | |
Default constructor for Modifier class. | |
virtual void | Enable () |
Enables the Modifier instance. | |
virtual void | Disable () |
Disables the Modifier instance. | |
virtual void | Update () |
Updates the Modifier instance. | |
virtual | ~Modifier () |
Destructor for Modifier class. | |
Public Member Functions inherited from netdem::Membrane | |
Membrane (double radius, double height) | |
Constructs a new Membrane object with the given radius and height. | |
Membrane (double radius, double height, double mesh_size) | |
Constructs a new Membrane object with the given radius, height, and element size. | |
Membrane (double radius, double height, double mesh_size, double center_x, double center_y, double center_z) | |
Constructs a new Membrane object with the given radius, height, element size, and center. | |
void | Remesh (double ele_size) |
Remeshes the membrane. | |
void | Init () |
Initializes the membrane. | |
void | SetBCNodalVelocity (int nid, double vx, double vy, double vz, bool use_prescribed_vx, bool use_prescribed_vy, bool use_prescribed_vz) |
Sets the nodal velocity and boundary condition for a given node. | |
void | Solve (double dt) |
Solves the membrane motion for a given timestep. | |
void | SaveAsVTK (std::string const &file_name) |
Saves the current state of the membrane as a VTK file. | |
~Membrane () | |
Destroys the Membrane object. | |
Public Attributes | |
bool | enable_deformation {false} |
bool | dump_info {true} |
bool | facing_outside {true} |
VecXT< Wall * > | wall_list |
Public Attributes inherited from netdem::Modifier | |
std::string | label {"default"} |
DEMSolver::CyclePoint | cycle_point {DEMSolver::CyclePoint::pre} |
Simulation * | sim {nullptr} |
Scene * | scene {nullptr} |
bool | update_with_scene {false} |
bool | enable_logging {true} |
Public Attributes inherited from netdem::Membrane | |
double | radius {0.25} |
The radius of the membrane. | |
double | height {1.0} |
The height of the membrane. | |
double | mesh_size {0.1} |
The size of the elements in the mesh used to represent the membrane. | |
Vec3d | center {0, 0, 0} |
The center of the membrane. | |
double | neo_k {6.94e5} |
Material properties of the membrane (neo-Hookean material model). | |
double | neo_mu {5.21e5} |
Material properties of the membrane (neo-Hookean material model). | |
double | density {500.0} |
Material properties of the membrane. | |
double | thickness {0.3e-3} |
Material properties of the membrane. | |
double | damp_coef {0.7} |
Damping coefficient for the membrane motion. | |
double | timestep {1.0e-4} |
Timestep for the simulation. | |
VecXT< Vec3d > | nodes |
Triangle mesh representing the membrane: nodes. | |
VecXT< Vec3i > | elements |
Triangle mesh representing the membrane: elements. | |
VecXT< Vec3d > | elemental_stress |
Elemental stress tensor for each element in the mesh. | |
VecXT< double > | nodal_vols |
Nodal volumes for each node in the mesh (used for updating motion using a lumped mass approach). | |
VecXT< Vec3d > | nodal_vels |
Nodal velocities for each node in the mesh (used for updating motion using a lumped mass approach). | |
VecXT< double > | bc_facet_pressure |
Facet pressures for the boundary conditions. | |
VecXT< Vec3d > | bc_facet_forces |
Facet forces for the boundary conditions. | |
VecXT< VecNT< double, 6 > > | bc_nodal_vels |
Nodal velocities for the boundary conditions. The last three elements indicate if prescribed velocities are used. | |
Additional Inherited Members | |
Protected Member Functions inherited from netdem::Membrane | |
void | Advance (double dt) |
Advances the membrane motion for a given timestep. | |
void | InitMesh () |
Initializes the mesh used to represent the membrane. | |
void | InitInitialCondition () |
Initializes the initial conditions for the simulation. | |
Mat2d | GetDeformationGradient (Vec3d const &v0, Vec3d const &v1, Vec3d const &v2) |
Calculates the deformation gradient tensor for an element. | |
Mat2d | GetCauchyStress (Mat2d const &def_grad) |
Calculates the Cauchy stress tensor for an element. | |
std::tuple< Mat3d, Mat3d > | GetGlobalForces (Mat2d const &cauchy_stress, double pressure, Vec3d const &v0, Vec3d const &v1, Vec3d const &v2) |
Calculates the global internal and external forces acting on an element. | |
Protected Attributes inherited from netdem::Membrane | |
double | ref_ele_width {0.1} |
Reference width and height of each element. | |
double | ref_ele_height {0.1} |
double | ref_ele_area {0.05} |
Reference area of each element. | |
VecXT< Vec3d > | nodal_forces_int |
Nodal internal forces. | |
VecXT< Vec3d > | nodal_forces_ext |
Nodal external forces. | |
A class used to model a membrane wall in a DEM simulation.
This class inherits from both the Modifier and Membrane classes.
MembraneWall::MembraneWall | ( | ) |
Default constructor for MembraneWall class.
MembraneWall::MembraneWall | ( | double | radius, |
double | height ) |
Constructor for MembraneWall class with specified radius and height.
radius | The radius of the membrane wall. |
height | The height of the membrane wall. |
MembraneWall::MembraneWall | ( | double | radius, |
double | height, | ||
double | mesh_size ) |
Constructor for MembraneWall class with specified radius, height, and mesh size.
radius | The radius of the membrane wall. |
height | The height of the membrane wall. |
mesh_size | The size of the mesh used to represent the wall. |
MembraneWall::MembraneWall | ( | double | radius, |
double | height, | ||
double | mesh_size, | ||
double | center_x, | ||
double | center_y, | ||
double | center_z ) |
Constructor for MembraneWall class with specified radius, height, mesh size, and center coordinates.
radius | The radius of the membrane wall. |
height | The height of the membrane wall. |
mesh_size | The size of the mesh used to represent the wall. |
center_x | The x-coordinate of the center of the wall. |
center_y | The y-coordinate of the center of the wall. |
center_z | The z-coordinate of the center of the wall. |
|
overridevirtual |
Clones the current MembraneWall instance.
Reimplemented from netdem::Modifier.
|
overridevirtual |
Executes the MembraneWall instance.
Positions of particles are constrained to be within the membrane wall.
Reimplemented from netdem::Modifier.
|
overridevirtual |
Initializes the MembraneWall instance.
sim | Pointer to the current simulation object. |
Reimplemented from netdem::Modifier.
void MembraneWall::SetDataType | ( | std::string const & | data_type | ) |
Sets the data type for saving membrane wall data.
data_type | The data type to save as (e.g. "vtk"). |
void MembraneWall::SetDimensions | ( | double | r, |
double | h ) |
Sets the radius and height of the membrane wall.
r | The new radius of the wall. |
h | The new height of the wall. |
void MembraneWall::SetPressure | ( | double | pressure | ) |
Sets the pressure applied to the membrane wall.
pressure | The pressure to apply to the wall. |
void MembraneWall::SetRootPath | ( | std::string const & | root_path | ) |
Sets the root path for saving membrane wall data.
root_path | The root path to save data to. |
void MembraneWall::SetSaveByCycles | ( | double | interval | ) |
Sets the cycle interval for saving membrane wall data.
interval | The cycle interval between saves. |
void MembraneWall::SetSaveByTime | ( | double | interval | ) |
Sets the time interval for saving membrane wall data.
interval | The time interval between saves. |
bool netdem::MembraneWall::dump_info {true} |
bool netdem::MembraneWall::enable_deformation {false} |
bool netdem::MembraneWall::facing_outside {true} |