v0.14.0
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
EshelbianPlasticity::OpDispBcImpl< A, GAUSS > Struct Template Reference

#include <users_modules/eshelbian_plasticit/src/EshelbianPlasticity.hpp>

Inheritance diagram for EshelbianPlasticity::OpDispBcImpl< A, GAUSS >:
[legend]
Collaboration diagram for EshelbianPlasticity::OpDispBcImpl< A, GAUSS >:
[legend]

Public Types

using OP = typename FormsIntegrators< FaceUserDataOperator >::Assembly< A >::OpBrokenBase
 

Public Member Functions

 OpDispBcImpl (boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::vector< boost::shared_ptr< ScalingMethod >> smv, boost::shared_ptr< Range > ents_ptr=nullptr)
 

Protected Member Functions

MoFEMErrorCode iNtegrate (EntData &data)
 

Protected Attributes

boost::shared_ptr< BcDispVecbcDispPtr
 
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
 

Detailed Description

template<AssemblyType A>
struct EshelbianPlasticity::OpDispBcImpl< A, GAUSS >

Definition at line 615 of file EshelbianPlasticity.hpp.

Member Typedef Documentation

◆ OP

template<AssemblyType A>
using EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::OP = typename FormsIntegrators<FaceUserDataOperator>::Assembly< A>::OpBrokenBase

Definition at line 619 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpDispBcImpl()

template<AssemblyType A>
EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::OpDispBcImpl ( boost::shared_ptr< std::vector< BrokenBaseSideData >>  broken_base_side_data,
boost::shared_ptr< BcDispVec > &  bc_disp_ptr,
std::vector< boost::shared_ptr< ScalingMethod >>  smv,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Definition at line 621 of file EshelbianPlasticity.hpp.

626  : OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
627  scalingMethodsVec(smv) {}

Member Function Documentation

◆ iNtegrate()

template<AssemblyType A>
MoFEMErrorCode EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::iNtegrate ( EntData data)
protected

Definition at line 742 of file EshelbianOperators.cpp.

742  {
744  // get entity of face
745  EntityHandle fe_ent = OP::getFEEntityHandle();
746  // iterate over all boundary data
747  for (auto &bc : (*bcDispPtr)) {
748  // check if finite element entity is part of boundary condition
749  if (bc.faces.find(fe_ent) != bc.faces.end()) {
750  int nb_dofs = data.getIndices().size();
751  int nb_integration_pts = OP::getGaussPts().size2();
752  auto t_normal = OP::getFTensor1NormalsAtGaussPts();
753  auto t_w = OP::getFTensor0IntegrationWeight();
754  int nb_base_functions = data.getN().size2() / 3;
755  auto t_row_base_fun = data.getFTensor1N<3>();
756 
759 
760  double scale = 1;
761  for (auto &sm : scalingMethodsVec) {
762  scale *= sm->getScale(OP::getFEMethod()->ts_t);
763  }
764 
765  // get bc data
766  FTensor::Tensor1<double, 3> t_bc_disp(bc.vals[0], bc.vals[1], bc.vals[2]);
767  t_bc_disp(i) *= scale;
768 
769  for (int gg = 0; gg != nb_integration_pts; ++gg) {
770  auto t_nf = getFTensor1FromPtr<3>(&*OP::locF.begin());
771  int bb = 0;
772  for (; bb != nb_dofs / SPACE_DIM; ++bb) {
773  t_nf(i) -=
774  t_w * (t_row_base_fun(j) * t_normal(j)) * t_bc_disp(i) * 0.5;
775  ++t_nf;
776  ++t_row_base_fun;
777  }
778  for (; bb != nb_base_functions; ++bb)
779  ++t_row_base_fun;
780 
781  ++t_w;
782  ++t_normal;
783  }
784  }
785  }
787 }

Member Data Documentation

◆ bcDispPtr

template<AssemblyType A>
boost::shared_ptr<BcDispVec> EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::bcDispPtr
protected

Definition at line 631 of file EshelbianPlasticity.hpp.

◆ scalingMethodsVec

template<AssemblyType A>
std::vector<boost::shared_ptr<ScalingMethod> > EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::scalingMethodsVec
protected

Definition at line 632 of file EshelbianPlasticity.hpp.


The documentation for this struct was generated from the following files:
FTensor::Tensor1< double, 3 >
EntityHandle
FTENSOR_INDEX
#define FTENSOR_INDEX(DIM, I)
Definition: Templates.hpp:2011
scale
double scale
Definition: plastic.cpp:119
EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::bcDispPtr
boost::shared_ptr< BcDispVec > bcDispPtr
Definition: EshelbianPlasticity.hpp:631
SPACE_DIM
constexpr int SPACE_DIM
Definition: child_and_parent.cpp:16
MoFEM::EntitiesFieldData::EntData::getIndices
const VectorInt & getIndices() const
Get global indices of dofs on entity.
Definition: EntitiesFieldData.hpp:1214
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::scalingMethodsVec
std::vector< boost::shared_ptr< ScalingMethod > > scalingMethodsVec
Definition: EshelbianPlasticity.hpp:632
MoFEM::EntitiesFieldData::EntData::getN
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....
Definition: EntitiesFieldData.hpp:1318
EshelbianPlasticity::OpDispBcImpl< A, GAUSS >::OP
typename FormsIntegrators< FaceUserDataOperator >::Assembly< A >::OpBrokenBase OP
Definition: EshelbianPlasticity.hpp:619
j
FTensor::Index< 'j', 3 > j
Definition: matrix_function.cpp:19
MoFEM::EntitiesFieldData::EntData::getFTensor1N
FTensor::Tensor1< FTensor::PackPtr< double *, Tensor_Dim >, Tensor_Dim > getFTensor1N(FieldApproximationBase base)
Get base functions for Hdiv/Hcurl spaces.
Definition: EntitiesFieldData.cpp:640
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359