![]() |
OGS
|
Dirichlet boundary condition with time-dependent decay.
This boundary condition imposes the initial values of the specified primary variable at the boundary nodes, scaled by a time-dependent parameter. The scaling parameter should be monotonically decreasing over time, representing progressive removal or reduction of support (e.g., during excavation). Typically, the scaling factor starts at 1 ( \( g(0, \mathbf{x}) = 1 \)) at the initial time and decreases to 0 ( \( g(t_e, \mathbf{x}) = 0 \)) at the end of the process ( \( t_e \)). The value of the boundary condition is given by
\[ g(t, \mathbf{x}) (u_0(\mathbf{x}) - u_{\text{min}}) + u_{\text{min}} \]
, where \( u_0(\mathbf{x}) \) is the initial value of the primary variable at the boundary node \( \mathbf{x} \), and \( u_{\text{min}} \) is the user-defined lower limit of the boundary value.
Definition at line 49 of file TimeDecayDirichletBoundaryCondition.h.
#include <TimeDecayDirichletBoundaryCondition.h>
Public Member Functions | |
TimeDecayDirichletBoundaryCondition (int const variable_id, int const component_id, MeshLib::Mesh const &boundary_mesh, NumLib::LocalToGlobalIndexMap const &dof_table_bulk, ParameterLib::Parameter< double > const &time_decay_parameter, double const lower_limit) | |
Constructs a time decay Dirichlet boundary condition. | |
void | getEssentialBCValues (const double t, GlobalVector const &x, NumLib::IndexValueVector< GlobalIndexType > &bc_values) const override |
Writes the values of essential BCs to bc_values . | |
![]() | |
virtual void | applyNaturalBC (const double, std::vector< GlobalVector * > const &, int const, GlobalMatrix *, GlobalVector &, GlobalMatrix *) |
virtual void | preTimestep (const double, std::vector< GlobalVector * > const &, int const) |
virtual void | postTimestep (const double, std::vector< GlobalVector * > const &, int const) |
virtual | ~BoundaryCondition ()=default |
Private Member Functions | |
void | setInitialValues (GlobalVector const &x) const |
Private Attributes | |
int const | variable_id_ |
int const | component_id_ |
MeshLib::Mesh const & | boundary_mesh_ |
std::unique_ptr< NumLib::LocalToGlobalIndexMap > const | dof_table_boundary_ |
ParameterLib::Parameter< double > const & | time_decay_parameter_ |
double const | lower_limit_ |
The lower limit of the boundary value. | |
std::vector< double > | initial_x_values_ |
bool | initial_values_are_set_ = false |
|
explicit |
Constructs a time decay Dirichlet boundary condition.
variable_id | The ID of the variable to which the condition are applied. |
component_id | The ID of the variable component to which the condition are applied. |
boundary_mesh | The mesh representing the boundary where the nodal forces are applied. |
dof_table_bulk | A unique pointer to the DOF table created from the boundary mesh. |
time_decay_parameter | A parameter that defines the scaling factor of the initial nodal values. It should be a monotonic decrease parameter, meaning it should decrease over time. |
lower_limit | The lower limit of the boundary value. |
Definition at line 41 of file TimeDecayDirichletBoundaryCondition.cpp.
|
overridevirtual |
Writes the values of essential BCs to bc_values
.
Reimplemented from ProcessLib::BoundaryCondition.
Definition at line 84 of file TimeDecayDirichletBoundaryCondition.cpp.
References boundary_mesh_, component_id_, DBUG(), dof_table_boundary_, MeshLib::Mesh::getID(), MeshLib::Mesh::getNodes(), NumLib::IndexValueVector< typename >::ids, initial_values_are_set_, initial_x_values_, lower_limit_, MeshLib::Node, NumLib::MeshComponentMap::nop, ParameterLib::SpatialPosition::setCoordinates(), setInitialValues(), ParameterLib::SpatialPosition::setNodeID(), time_decay_parameter_, NumLib::IndexValueVector< typename >::values, and variable_id_.
|
private |
Definition at line 57 of file TimeDecayDirichletBoundaryCondition.cpp.
References boundary_mesh_, component_id_, dof_table_boundary_, MathLib::EigenVector::get(), initial_x_values_, MeshLib::views::meshLocations(), MeshLib::Node, NumLib::MeshComponentMap::nop, and variable_id_.
Referenced by getEssentialBCValues().
|
private |
Definition at line 84 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues(), and setInitialValues().
|
private |
Definition at line 82 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues(), and setInitialValues().
|
private |
Definition at line 86 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues(), and setInitialValues().
|
mutableprivate |
Definition at line 107 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues().
|
mutableprivate |
This vector is used to store the initial values at the boundary nodes before they are scaled by the time decay parameter.
Definition at line 105 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues(), and setInitialValues().
|
private |
The lower limit of the boundary value.
Definition at line 101 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues().
|
private |
A monotonically decreasing parameter that defines the scaling factor of the initial values of the specified primary variable. It is a time- and position-dependent release parameter \( g(t, \mathbf{x}) \) representing the progressive removal of support over time, e.g., \( g(0, \mathbf{x}) = 1 \) and \( g(t_e, \mathbf{x}) = 0, \) where \( t_e \) is the end time of decay, and \( \frac{\partial g}{\partial t} < 0 \).
Definition at line 98 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues().
|
private |
Definition at line 81 of file TimeDecayDirichletBoundaryCondition.h.
Referenced by getEssentialBCValues(), and setInitialValues().