|
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} |