NetDEM v1.0
Loading...
Searching...
No Matches
netdem::MembraneWall Class Reference

A class used to model a membrane wall in a DEM simulation. More...

#include <membrane_wall.hpp>

Inheritance diagram for netdem::MembraneWall:
netdem::Modifier netdem::Membrane

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.
 
ModifierClone () 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}
 
Simulationsim {nullptr}
 
Scenescene {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< Vec3dnodes
 Triangle mesh representing the membrane: nodes.
 
VecXT< Vec3ielements
 Triangle mesh representing the membrane: elements.
 
VecXT< Vec3delemental_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< Vec3dnodal_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< Vec3dbc_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, Mat3dGetGlobalForces (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< Vec3dnodal_forces_int
 Nodal internal forces.
 
VecXT< Vec3dnodal_forces_ext
 Nodal external forces.
 

Detailed Description

A class used to model a membrane wall in a DEM simulation.

This class inherits from both the Modifier and Membrane classes.

Examples
1_membrane_case.cpp.

Constructor & Destructor Documentation

◆ MembraneWall() [1/4]

MembraneWall::MembraneWall ( )

Default constructor for MembraneWall class.

◆ MembraneWall() [2/4]

MembraneWall::MembraneWall ( double radius,
double height )

Constructor for MembraneWall class with specified radius and height.

Parameters
radiusThe radius of the membrane wall.
heightThe height of the membrane wall.

◆ MembraneWall() [3/4]

MembraneWall::MembraneWall ( double radius,
double height,
double mesh_size )

Constructor for MembraneWall class with specified radius, height, and mesh size.

Parameters
radiusThe radius of the membrane wall.
heightThe height of the membrane wall.
mesh_sizeThe size of the mesh used to represent the wall.

◆ MembraneWall() [4/4]

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.

Parameters
radiusThe radius of the membrane wall.
heightThe height of the membrane wall.
mesh_sizeThe size of the mesh used to represent the wall.
center_xThe x-coordinate of the center of the wall.
center_yThe y-coordinate of the center of the wall.
center_zThe z-coordinate of the center of the wall.

Member Function Documentation

◆ Clone()

Modifier * MembraneWall::Clone ( ) const
overridevirtual

Clones the current MembraneWall instance.

Returns
A pointer to the cloned MembraneWall instance.

Reimplemented from netdem::Modifier.

◆ Execute()

void MembraneWall::Execute ( )
overridevirtual

Executes the MembraneWall instance.

Positions of particles are constrained to be within the membrane wall.

Reimplemented from netdem::Modifier.

◆ Init()

void MembraneWall::Init ( Simulation * sim)
overridevirtual

Initializes the MembraneWall instance.

Parameters
simPointer to the current simulation object.

Reimplemented from netdem::Modifier.

◆ SetDataType()

void MembraneWall::SetDataType ( std::string const & data_type)

Sets the data type for saving membrane wall data.

Parameters
data_typeThe data type to save as (e.g. "vtk").

◆ SetDimensions()

void MembraneWall::SetDimensions ( double r,
double h )

Sets the radius and height of the membrane wall.

Parameters
rThe new radius of the wall.
hThe new height of the wall.

◆ SetPressure()

void MembraneWall::SetPressure ( double pressure)

Sets the pressure applied to the membrane wall.

Parameters
pressureThe pressure to apply to the wall.

◆ SetRootPath()

void MembraneWall::SetRootPath ( std::string const & root_path)

Sets the root path for saving membrane wall data.

Parameters
root_pathThe root path to save data to.

◆ SetSaveByCycles()

void MembraneWall::SetSaveByCycles ( double interval)

Sets the cycle interval for saving membrane wall data.

Parameters
intervalThe cycle interval between saves.

◆ SetSaveByTime()

void MembraneWall::SetSaveByTime ( double interval)

Sets the time interval for saving membrane wall data.

Parameters
intervalThe time interval between saves.

Member Data Documentation

◆ dump_info

bool netdem::MembraneWall::dump_info {true}

◆ enable_deformation

bool netdem::MembraneWall::enable_deformation {false}

◆ facing_outside

bool netdem::MembraneWall::facing_outside {true}

◆ wall_list

VecXT<Wall *> netdem::MembraneWall::wall_list

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