v0.14.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase > Struct Template Reference

#include <src/finite_elements/FormsBrokenSpaceConstraintImpl.hpp>

Inheritance diagram for MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >:
[legend]
Collaboration diagram for MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >:
[legend]

Public Types

using OP = OpBase
 

Public Member Functions

 OpBrokenSpaceConstrainDHybridImpl (const std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_side_data_ptr, boost::shared_ptr< double > beta_ptr, boost::shared_ptr< Range > ents_ptr=nullptr)
 
 OpBrokenSpaceConstrainDHybridImpl (const std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_side_data_ptr, double beta, boost::shared_ptr< Range > ents_ptr=nullptr)
 

Private Member Functions

MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data)
 

Private Attributes

boost::shared_ptr< doublescalarBetaPtr
 
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenSideDataPtr
 

Detailed Description

template<int FIELD_DIM, typename OpBase>
struct MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >

Definition at line 507 of file FormsBrokenSpaceConstraintImpl.hpp.

Member Typedef Documentation

◆ OP

template<int FIELD_DIM, typename OpBase >
using MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OP = OpBase

Definition at line 510 of file FormsBrokenSpaceConstraintImpl.hpp.

Constructor & Destructor Documentation

◆ OpBrokenSpaceConstrainDHybridImpl() [1/2]

template<int FIELD_DIM, typename OpBase >
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OpBrokenSpaceConstrainDHybridImpl ( const std::string  row_field,
boost::shared_ptr< std::vector< BrokenBaseSideData >>  broken_side_data_ptr,
boost::shared_ptr< double beta_ptr,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Definition at line 512 of file FormsBrokenSpaceConstraintImpl.hpp.

517  : OpBase(row_field, row_field, OpBase::OPROW, ents_ptr),
518  brokenSideDataPtr(broken_side_data_ptr), scalarBetaPtr(beta_ptr) {}

◆ OpBrokenSpaceConstrainDHybridImpl() [2/2]

template<int FIELD_DIM, typename OpBase >
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OpBrokenSpaceConstrainDHybridImpl ( const std::string  row_field,
boost::shared_ptr< std::vector< BrokenBaseSideData >>  broken_side_data_ptr,
double  beta,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Definition at line 520 of file FormsBrokenSpaceConstraintImpl.hpp.

524  : OpBrokenSpaceConstrainDHybridImpl(row_field, broken_side_data_ptr,
525  boost::make_shared<double>(beta),
526  ents_ptr) {}

Member Function Documentation

◆ iNtegrate()

template<int FIELD_DIM, typename OpBase >
MoFEMErrorCode MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::iNtegrate ( EntitiesFieldData::EntData row_data)
private

Definition at line 536 of file FormsBrokenSpaceConstraintImpl.hpp.

537  {
539 
541  FTENSOR_INDEX(3, J);
542 
543  OP::locF.resize(row_data.getIndices().size(), false);
544  OP::locF.clear();
545 
546  for (auto &bd : *brokenSideDataPtr) {
547  auto t_w = this->getFTensor0IntegrationWeight();
548  auto t_normal = OpBase::getFTensor1NormalsAtGaussPts();
549  auto t_row_base = row_data.getFTensor0N();
550  auto t_flux = getFTensor2FromMat<FIELD_DIM, 3>(bd.getFlux());
551  auto nb_base_functions = row_data.getN().size2() / 3;
552  auto sense = bd.getSense();
553  for (size_t gg = 0; gg != OpBase::nbIntegrationPts; ++gg) {
554  auto t_vec = getFTensor1FromPtr<FIELD_DIM>(&*OP::locF.data().begin());
555  size_t rr = 0;
556  for (; rr != row_data.getIndices().size() / FIELD_DIM; ++rr) {
557  t_vec(i) += (sense * t_w) * t_row_base * t_normal(J) * t_flux(i, J);
558  ++t_row_base;
559  ++t_vec;
560  }
561  for (; rr < nb_base_functions; ++rr)
562  ++t_row_base;
563  ++t_w;
564  ++t_normal;
565  ++t_flux;
566  }
567  }
568 
569  if(scalarBetaPtr)
570  OP::locF *= *scalarBetaPtr;
571 
573 }

Member Data Documentation

◆ brokenSideDataPtr

template<int FIELD_DIM, typename OpBase >
boost::shared_ptr<std::vector<BrokenBaseSideData> > MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::brokenSideDataPtr
private

Definition at line 530 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ scalarBetaPtr

template<int FIELD_DIM, typename OpBase >
boost::shared_ptr<double> MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::scalarBetaPtr
private

Definition at line 529 of file FormsBrokenSpaceConstraintImpl.hpp.


The documentation for this struct was generated from the following file:
MoFEM::OpBaseImpl::nbIntegrationPts
int nbIntegrationPts
number of integration points
Definition: FormsIntegrators.hpp:238
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
OpBase
OpBaseImpl< PETSC, EdgeEleOp > OpBase
Definition: radiation.cpp:29
FTENSOR_INDEX
#define FTENSOR_INDEX(DIM, I)
Definition: Templates.hpp:2013
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::scalarBetaPtr
boost::shared_ptr< double > scalarBetaPtr
Definition: FormsBrokenSpaceConstraintImpl.hpp:529
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::brokenSideDataPtr
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenSideDataPtr
Definition: FormsBrokenSpaceConstraintImpl.hpp:530
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OpBrokenSpaceConstrainDHybridImpl
OpBrokenSpaceConstrainDHybridImpl(const std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_side_data_ptr, boost::shared_ptr< double > beta_ptr, boost::shared_ptr< Range > ents_ptr=nullptr)
Definition: FormsBrokenSpaceConstraintImpl.hpp:512
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
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