v0.14.0
Public Member Functions | Static Public Member Functions | List of all members
MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase > Struct Template Reference

#include <src/boundary_conditions/NaturalMeshsetType.hpp>

Public Member Functions

 AddFluxToRhsPipelineImpl ()=delete
 

Static Public Member Functions

static MoFEMErrorCode add (boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod >> smv, std::string block_name, ScalarFun user_fun, Sev sev)
 
static MoFEMErrorCode add (boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod >> smv, std::string block_name, Sev sev)
 

Detailed Description

template<CubitBC BCTYPE, int BASE_DIM, int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase>
struct MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase >

Definition at line 763 of file NaturalMeshsetType.hpp.

Constructor & Destructor Documentation

◆ AddFluxToRhsPipelineImpl()

template<CubitBC BCTYPE, int BASE_DIM, int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase >::AddFluxToRhsPipelineImpl ( )
delete

Member Function Documentation

◆ add() [1/2]

template<CubitBC BCTYPE, int BASE_DIM, int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
static MoFEMErrorCode MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase >::add ( boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &  pipeline,
MoFEM::Interface m_field,
const std::string  field_name,
std::vector< boost::shared_ptr< ScalingMethod >>  smv,
std::string  block_name,
ScalarFun  user_fun,
Sev  sev 
)
inlinestatic

Definition at line 773 of file NaturalMeshsetType.hpp.

780  {
782 
783  using OP = typename NaturalBC<OpBase>::template Assembly<
784  A>::template LinearForm<I>::template OpFlux<NaturalMeshsetType<BCTYPE>,
786 
787  auto add_op = [&](auto &&meshset_vec_ptr) {
788  for (auto m : meshset_vec_ptr) {
789  MOFEM_TAG_AND_LOG("WORLD", sev, "OpFlux") << "Add " << *m;
790  pipeline.push_back(
791  new OP(m_field, m->getMeshsetId(), field_name, smv, user_fun));
792  }
793  MOFEM_LOG_CHANNEL("WORLD");
794  };
795 
796  switch (BCTYPE) {
797  case TEMPERATURESET:
798  case FORCESET:
799  add_op(m_field.getInterface<MeshsetsManager>()->getCubitMeshsetPtr(
800  NODESET | BCTYPE));
801  case PRESSURESET:
802  case HEATFLUXSET:
803  add_op(m_field.getInterface<MeshsetsManager>()->getCubitMeshsetPtr(
804  SIDESET | BCTYPE));
805  break;
806  case BLOCKSET:
807  add_op(
808 
809  m_field.getInterface<MeshsetsManager>()->getCubitMeshsetPtr(
810  std::regex(
811 
812  (boost::format("%s(.*)") % block_name).str()
813 
814  ))
815 
816  );
817 
818  break;
819  default:
820  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
821  "Handling of bc type not implemented");
822  break;
823  }
825  }

◆ add() [2/2]

template<CubitBC BCTYPE, int BASE_DIM, int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase >
static MoFEMErrorCode MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase >::add ( boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &  pipeline,
MoFEM::Interface m_field,
const std::string  field_name,
std::vector< boost::shared_ptr< ScalingMethod >>  smv,
std::string  block_name,
Sev  sev 
)
inlinestatic

Definition at line 828 of file NaturalMeshsetType.hpp.

831  {
832  return add(
833  pipeline, m_field, field_name, smv, block_name,
834  [](double, double, double) { return 1; }, sev);
835  }

The documentation for this struct was generated from the following file:
MoFEM::UnknownInterface::getInterface
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.
Definition: UnknownInterface.hpp:93
SIDESET
@ SIDESET
Definition: definitions.h:147
MoFEM::AddFluxToRhsPipelineImpl< OpFluxRhsImpl< NaturalMeshsetType< BCTYPE >, BASE_DIM, FIELD_DIM, A, I, OpBase >, A, I, OpBase >::add
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod >> smv, std::string block_name, ScalarFun user_fun, Sev sev)
Definition: NaturalMeshsetType.hpp:773
MOFEM_LOG_CHANNEL
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
Definition: LogManager.hpp:284
PRESSURESET
@ PRESSURESET
Definition: definitions.h:152
A
constexpr AssemblyType A
Definition: operators_tests.cpp:30
BASE_DIM
constexpr int BASE_DIM
Definition: dg_projection.cpp:15
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
NODESET
@ NODESET
Definition: definitions.h:146
FORCESET
@ FORCESET
Definition: definitions.h:151
OpFlux
Definition: hcurl_divergence_operator_2d.cpp:56
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
MOFEM_TAG_AND_LOG
#define MOFEM_TAG_AND_LOG(channel, severity, tag)
Tag and log in channel.
Definition: LogManager.hpp:362
BLOCKSET
@ BLOCKSET
Definition: definitions.h:148
TEMPERATURESET
@ TEMPERATURESET
Definition: definitions.h:155
m
FTensor::Index< 'm', 3 > m
Definition: shallow_wave.cpp:80
HEATFLUXSET
@ HEATFLUXSET
Definition: definitions.h:156
OP
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
MOFEM_NOT_IMPLEMENTED
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346