v0.14.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase > Struct Template Reference

#include <src/boundary_conditions/EssentialDisplacementCubitBcData.hpp>

Inheritance diagram for MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >:
[legend]
Collaboration diagram for MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >:
[legend]

Public Types

using OpSource = typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, FIELD_DIM >
 

Public Member Functions

 OpEssentialRhsImpl (const std::string field_name, boost::shared_ptr< DisplacementCubitBcData > bc_data, boost::shared_ptr< Range > ents_ptr, std::vector< boost::shared_ptr< ScalingMethod >> smv)
 

Private Member Functions

FTensor::Tensor1< double, FIELD_DIMrotFunction (double x, double y, double z)
 
VectorFun< FIELD_DIMinitDispFunction (boost::shared_ptr< DisplacementCubitBcData > bc_data)
 

Private Attributes

FTensor::Tensor1< double, FIELD_DIMtVal
 
FTensor::Tensor1< double, 3 > tAngles
 
FTensor::Tensor1< double, 3 > tOffset
 
VecOfTimeScalingMethods vecOfTimeScalingMethods
 

Detailed Description

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase>
struct MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >

Definition at line 168 of file EssentialDisplacementCubitBcData.hpp.

Member Typedef Documentation

◆ OpSource

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
using MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::OpSource = typename FormsIntegrators<OpBase>::template Assembly< A>::template LinearForm<I>::template OpSource<1, FIELD_DIM>

Definition at line 173 of file EssentialDisplacementCubitBcData.hpp.

Constructor & Destructor Documentation

◆ OpEssentialRhsImpl()

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::OpEssentialRhsImpl ( const std::string  field_name,
boost::shared_ptr< DisplacementCubitBcData bc_data,
boost::shared_ptr< Range ents_ptr,
std::vector< boost::shared_ptr< ScalingMethod >>  smv 
)

Definition at line 209 of file EssentialDisplacementCubitBcData.hpp.

213  : OpSource(field_name, initDispFunction(bc_data), ents_ptr),
215  static_assert(FIELD_DIM > 1, "Is not implemented for scalar field");
216 
218  tVal(i) = 0;
219  tAngles(i) = 0;
220  tOffset(i) = 0;
221 
222  if (bc_data->data.flag1 == 1)
223  tVal(0) = -bc_data->data.value1;
224  if (bc_data->data.flag2 == 1 && FIELD_DIM > 1)
225  tVal(1) = -bc_data->data.value2;
226  if (bc_data->data.flag3 == 1 && FIELD_DIM > 2)
227  tVal(2) = -bc_data->data.value3;
228  if (bc_data->data.flag4 == 1 && FIELD_DIM > 2)
229  tAngles(0) = -bc_data->data.value4;
230  if (bc_data->data.flag5 == 1 && FIELD_DIM > 2)
231  tAngles(1) = -bc_data->data.value5;
232  if (bc_data->data.flag6 == 1 && FIELD_DIM > 1)
233  tAngles(2) = -bc_data->data.value6;
234 
235  if (auto ext_bc_data =
236  dynamic_cast<DisplacementCubitBcDataWithRotation const *>(
237  bc_data.get())) {
238  for (int a = 0; a != 3; ++a)
239  tOffset(a) = ext_bc_data->rotOffset[a];
240  }
241 
242  this->timeScalingFun = [this](const double t) {
243  double s = 1;
244  for (auto &o : vecOfTimeScalingMethods) {
245  s *= o->getScale(t);
246  }
247  return s;
248  };
249 }

Member Function Documentation

◆ initDispFunction()

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
VectorFun<FIELD_DIM> MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::initDispFunction ( boost::shared_ptr< DisplacementCubitBcData bc_data)
inlineprivate

Definition at line 197 of file EssentialDisplacementCubitBcData.hpp.

197  {
198  if (bc_data->data.flag4 || bc_data->data.flag5 || bc_data->data.flag6) {
199  return [this](double x, double y, double z) {
200  return this->rotFunction(x, y, z);
201  };
202  }
203  return [this](double x, double y, double z) { return tVal; };
204  }

◆ rotFunction()

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
FTensor::Tensor1<double, FIELD_DIM> MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::rotFunction ( double  x,
double  y,
double  z 
)
inlineprivate

Definition at line 186 of file EssentialDisplacementCubitBcData.hpp.

187  {
192  t_ret(i) = tVal(i) + rot(i);
193  return t_ret;
194  };

Member Data Documentation

◆ tAngles

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
FTensor::Tensor1<double, 3> MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tAngles
private

Definition at line 182 of file EssentialDisplacementCubitBcData.hpp.

◆ tOffset

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
FTensor::Tensor1<double, 3> MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tOffset
private

Definition at line 183 of file EssentialDisplacementCubitBcData.hpp.

◆ tVal

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
FTensor::Tensor1<double, FIELD_DIM> MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tVal
private

Definition at line 181 of file EssentialDisplacementCubitBcData.hpp.

◆ vecOfTimeScalingMethods

template<int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
VecOfTimeScalingMethods MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::vecOfTimeScalingMethods
private

Definition at line 184 of file EssentialDisplacementCubitBcData.hpp.


The documentation for this struct was generated from the following file:
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::rotFunction
FTensor::Tensor1< double, FIELD_DIM > rotFunction(double x, double y, double z)
Definition: EssentialDisplacementCubitBcData.hpp:186
FTensor::Tensor1< double, 3 >
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tVal
FTensor::Tensor1< double, FIELD_DIM > tVal
Definition: EssentialDisplacementCubitBcData.hpp:181
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tAngles
FTensor::Tensor1< double, 3 > tAngles
Definition: EssentialDisplacementCubitBcData.hpp:182
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::vecOfTimeScalingMethods
VecOfTimeScalingMethods vecOfTimeScalingMethods
Definition: EssentialDisplacementCubitBcData.hpp:184
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::OpSource
typename FormsIntegrators< OpBase >::template Assembly< A >::template LinearForm< I >::template OpSource< 1, FIELD_DIM > OpSource
Definition: EssentialDisplacementCubitBcData.hpp:173
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
FTensor::Tensor1::data
T data[Tensor_Dim]
Definition: Tensor1_value.hpp:10
a
constexpr double a
Definition: approx_sphere.cpp:30
MoFEM::DisplacementCubitBcDataWithRotation::GetRotDisp
static FTensor::Tensor1< double, 3 > GetRotDisp(const FTensor::Tensor1< double, 3 > &angles, FTensor::Tensor1< double, 3 > coordinates, FTensor::Tensor1< double, 3 > offset=FTensor::Tensor1< double, 3 >{ 0., 0., 0.})
Calculates the rotated displacement given the rotation angles, coordinates, and an optional offset.
Definition: EssentialDisplacementCubitBcData.hpp:40
t
constexpr double t
plate stiffness
Definition: plate.cpp:59
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
FTensor::Index< 'i', FIELD_DIM >
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::initDispFunction
VectorFun< FIELD_DIM > initDispFunction(boost::shared_ptr< DisplacementCubitBcData > bc_data)
Definition: EssentialDisplacementCubitBcData.hpp:197
MoFEM::OpEssentialRhsImpl< DisplacementCubitBcData, 1, FIELD_DIM, A, I, OpBase >::tOffset
FTensor::Tensor1< double, 3 > tOffset
Definition: EssentialDisplacementCubitBcData.hpp:183