NetDEM v1.0
|
A class used to control the pressure of walls in a DEM simulation. More...
#include <wall_servo_control.hpp>
Public Member Functions | |
WallServoControl (double kn, double area) | |
Constructor for WallServoControl class. | |
Modifier * | Clone () const override |
Clones the current WallServoControl instance. | |
void | Execute () override |
Executes the WallServoControl instance. | |
void | Update () override |
Updates the WallServoControl instance. | |
Public Member Functions inherited from netdem::WallGroup | |
WallGroup () | |
Default constructor for WallGroup class. | |
VecXT< Wall * > const & | GetWalls () |
Get the walls. | |
void | AddWall (int id) |
Adds a wall to the group. | |
void | RemoveWall (int id) |
Removes a wall from the group. | |
void | AddWall (const VecXT< int > &ids) |
Adds multiple walls to the group. | |
void | RemoveWall (const VecXT< int > &ids) |
Removes multiple walls from the group. | |
void | AddWall (const std::initializer_list< int > &ids) |
Adds multiple walls to the group. | |
void | RemoveWall (const std::initializer_list< int > &ids) |
Removes multiple walls from the group. | |
void | SetWall (int id) |
Sets the walls based on a wall ID. | |
void | SetWall (const VecXT< int > &id_list) |
Sets the walls based on a variable number of wall IDs. | |
void | SetWall (const std::initializer_list< int > &id_list) |
Sets the walls based on a variable number of wall IDs. | |
void | Clear () |
Clears all walls from the group. | |
Public Member Functions inherited from netdem::Modifier | |
Modifier () | |
Default constructor for Modifier class. | |
virtual void | Init (Simulation *sim) |
Initializes the Modifier instance. | |
virtual void | Enable () |
Enables the Modifier instance. | |
virtual void | Disable () |
Disables the Modifier instance. | |
virtual | ~Modifier () |
Destructor for Modifier class. | |
Public Attributes | |
double | kn {1.0e5} |
wall stiffness | |
double | area {0.1} |
Wall area, on which the pressure is applied. | |
double | target_pressure {0.0} |
Target pressure. | |
double | vel_max {0.5} |
Maximum velocity of wall during servo-control. | |
double | study_rate {0.5} |
Coefficient of PID servo-control. | |
double | tol {0.05} |
Tolerance of servo-control. | |
bool | achieved {true} |
A flag indicating if target pressure is achieved. | |
bool | enable_warning {false} |
A flag indicating whether to log warning info. | |
bool | enable_auto_area {false} |
A flag indicating whether to automaticaly calculate the contact area from the particles. | |
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} |
Additional Inherited Members | |
Protected Attributes inherited from netdem::WallGroup | |
std::unordered_set< int > | wall_id_list |
The list of wall ids. | |
VecXT< Wall * > | wall_list |
The list of wall. | |
A class used to control the pressure of walls in a DEM simulation.
The WallServoControl class is used to control the pressure of walls in a DEM simulation by adjusting their position based on the target pressure and achieved pressure.
netdem::WallServoControl::WallServoControl | ( | double | kn, |
double | area ) |
Constructor for WallServoControl class.
kn | The spring constant used in the servo control algorithm. |
area | The initial area of the walls being controlled. |
|
overridevirtual |
Clones the current WallServoControl instance.
Reimplemented from netdem::WallGroup.
|
overridevirtual |
Executes the WallServoControl instance.
Reimplemented from netdem::WallGroup.
|
overridevirtual |
Updates the WallServoControl instance.
Reimplemented from netdem::WallGroup.
bool netdem::WallServoControl::achieved {true} |
A flag indicating if target pressure is achieved.
double netdem::WallServoControl::area {0.1} |
Wall area, on which the pressure is applied.
bool netdem::WallServoControl::enable_auto_area {false} |
A flag indicating whether to automaticaly calculate the contact area from the particles.
bool netdem::WallServoControl::enable_warning {false} |
A flag indicating whether to log warning info.
double netdem::WallServoControl::kn {1.0e5} |
wall stiffness
double netdem::WallServoControl::study_rate {0.5} |
Coefficient of PID servo-control.
double netdem::WallServoControl::target_pressure {0.0} |
Target pressure.
double netdem::WallServoControl::tol {0.05} |
Tolerance of servo-control.
double netdem::WallServoControl::vel_max {0.5} |
Maximum velocity of wall during servo-control.