OGS
ProcessLib::DeactivatedSubdomain Struct Reference

Detailed Description

Time depend subdomain deactivation.

Subdomain deactivation is space and time dependent. The spatial extent of deactivated elements is defined through a set of material ids. Additionally a line segment separates through its normal plane and position on the line segment an active and inactive part.

The subdomain can be deactivated at once using a time interval. For fine grained control a time curve can be specified. It maps current time to position on the line segment. Elements, which center points lie left of this position are deactivated.

The deactivated elements are excluded from the assembly, pre and post call, secondary variables computation and the like. To keep the size of the global linear equation system artificial Dirichlet boundary conditions are applied on the interior of the deactivated subdomain. The nodes on the border between the active and inactive elements are not affected.

Definition at line 68 of file DeactivatedSubdomain.h.

#include <DeactivatedSubdomain.h>

Collaboration diagram for ProcessLib::DeactivatedSubdomain:
[legend]

Public Member Functions

 DeactivatedSubdomain (MathLib::PiecewiseLinearInterpolation time_interval_, std::pair< Eigen::Vector3d, Eigen::Vector3d > line_segment, std::vector< int > &&materialIDs_, std::vector< std::unique_ptr< DeactivatedSubdomainMesh >> &&deactivated_subdomain_meshes_, ParameterLib::Parameter< double > const *boundary_value_parameter)
 
bool isInTimeSupportInterval (double const t) const
 
bool isDeactivated (MathLib::Point3d const &point, double const time) const
 

Public Attributes

MathLib::PiecewiseLinearInterpolation const time_interval
 
std::pair< Eigen::Vector3d, Eigen::Vector3d > line_segment
 
std::vector< int > const materialIDs
 The material IDs of the deactivated the subdomains. More...
 
std::vector< std::unique_ptr< DeactivatedSubdomainMesh > > const deactivated_subdomain_meshes
 
ParameterLib::Parameter< double > const *const boundary_value_parameter
 

Static Public Attributes

static const std::string zero_parameter_name
 

Constructor & Destructor Documentation

◆ DeactivatedSubdomain()

ProcessLib::DeactivatedSubdomain::DeactivatedSubdomain ( MathLib::PiecewiseLinearInterpolation  time_interval_,
std::pair< Eigen::Vector3d, Eigen::Vector3d >  line_segment,
std::vector< int > &&  materialIDs_,
std::vector< std::unique_ptr< DeactivatedSubdomainMesh >> &&  deactivated_subdomain_meshes_,
ParameterLib::Parameter< double > const *  boundary_value_parameter 
)

Definition at line 36 of file DeactivatedSubdomain.cpp.

44  : time_interval(std::move(time_interval_)),
46  materialIDs(std::move(materialIDs_)),
47  deactivated_subdomain_meshes(std::move(deactivated_subdomain_meshes_)),
49 {
50 }
std::pair< Eigen::Vector3d, Eigen::Vector3d > line_segment
MathLib::PiecewiseLinearInterpolation const time_interval
std::vector< std::unique_ptr< DeactivatedSubdomainMesh > > const deactivated_subdomain_meshes
std::vector< int > const materialIDs
The material IDs of the deactivated the subdomains.
ParameterLib::Parameter< double > const *const boundary_value_parameter

Member Function Documentation

◆ isDeactivated()

bool ProcessLib::DeactivatedSubdomain::isDeactivated ( MathLib::Point3d const &  point,
double const  time 
) const
Returns
true if the point is in the deactivated part of the subdomain. The domain is split into two parts by a plane defined as a normal plane of the line segment and the position on the line segment, where the latter is defined by the time curve.

Definition at line 58 of file DeactivatedSubdomain.cpp.

60 {
61  // Line from a to b.
62  auto const& a = line_segment.first;
63  auto const& b = line_segment.second;
64  // Tangent vector t = (b - a)/|b - a|.
65  Eigen::Vector3d const t = (b - a).normalized();
66 
67  // Position r on the line at given time.
68  Eigen::Vector3d const r = a + t * time_interval.getValue(time);
69  Eigen::Map<Eigen::Vector3d const> const p{point.getCoords(), 3};
70 
71  // Return true if p is "behind" the plane through r.
72  return (p - r).dot(t) <= 0;
73 }
double getValue(double pnt_to_interpolate) const
Calculates the interpolation value.
static const double r

References MathLib::TemplatePoint< T, DIM >::getCoords(), MathLib::PiecewiseLinearInterpolation::getValue(), line_segment, MathLib::r, and time_interval.

◆ isInTimeSupportInterval()

bool ProcessLib::DeactivatedSubdomain::isInTimeSupportInterval ( double const  t) const
Returns
true if the given time is included in the subdomains time support interval.

Definition at line 52 of file DeactivatedSubdomain.cpp.

References MathLib::PiecewiseLinearInterpolation::getSupportMax(), MathLib::PiecewiseLinearInterpolation::getSupportMin(), and time_interval.

Member Data Documentation

◆ boundary_value_parameter

ParameterLib::Parameter<double> const* const ProcessLib::DeactivatedSubdomain::boundary_value_parameter

A pararameter for the optional Dirichlet boundary condition applied on the surface of the deactivated subdomain/excavation.

Definition at line 103 of file DeactivatedSubdomain.h.

◆ deactivated_subdomain_meshes

std::vector<std::unique_ptr<DeactivatedSubdomainMesh> > const ProcessLib::DeactivatedSubdomain::deactivated_subdomain_meshes

Definition at line 99 of file DeactivatedSubdomain.h.

◆ line_segment

std::pair<Eigen::Vector3d, Eigen::Vector3d> ProcessLib::DeactivatedSubdomain::line_segment

Line segment along which excavation progresses. Represented by start and end points.

Definition at line 93 of file DeactivatedSubdomain.h.

Referenced by isDeactivated().

◆ materialIDs

std::vector<int> const ProcessLib::DeactivatedSubdomain::materialIDs

The material IDs of the deactivated the subdomains.

Definition at line 96 of file DeactivatedSubdomain.h.

◆ time_interval

MathLib::PiecewiseLinearInterpolation const ProcessLib::DeactivatedSubdomain::time_interval

Definition at line 89 of file DeactivatedSubdomain.h.

Referenced by isDeactivated(), and isInTimeSupportInterval().

◆ zero_parameter_name

const std::string ProcessLib::DeactivatedSubdomain::zero_parameter_name
static
Initial value:
=
"zero_for_element_deactivation_approach"

Definition at line 105 of file DeactivatedSubdomain.h.

Referenced by ProcessLib::ProcessVariable::createBoundaryConditionsForDeactivatedSubDomains(), and ProjectData::parseParameters().


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