v0.16.3
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MatOps::OpAxisymmetricRhs< A, DomainEleOp > Struct Template Reference

#include "src/materials/MatAxisymmetric.hpp"

Inheritance diagram for MatOps::OpAxisymmetricRhs< A, DomainEleOp >:
[legend]
Collaboration diagram for MatOps::OpAxisymmetricRhs< A, DomainEleOp >:
[legend]

Public Types

using OpBase = OpAxisymmetricBase< A, DomainEleOp >
 

Public Member Functions

 OpAxisymmetricRhs (const std::string field_name, boost::shared_ptr< MatrixDouble > full_stress_ptr)
 

Protected Member Functions

MoFEMErrorCode iNtegrate (EntData &row_data) override
 

Protected Attributes

boost::shared_ptr< MatrixDoublefullStressPtr
 

Detailed Description

template<AssemblyType A, typename DomainEleOp>
struct MatOps::OpAxisymmetricRhs< A, DomainEleOp >

Definition at line 137 of file MatAxisymmetric.hpp.

Member Typedef Documentation

◆ OpBase

Definition at line 138 of file MatAxisymmetric.hpp.

Constructor & Destructor Documentation

◆ OpAxisymmetricRhs()

template<AssemblyType A, typename DomainEleOp >
MatOps::OpAxisymmetricRhs< A, DomainEleOp >::OpAxisymmetricRhs ( const std::string  field_name,
boost::shared_ptr< MatrixDouble full_stress_ptr 
)
inline

Definition at line 140 of file MatAxisymmetric.hpp.

142 : OpBase(field_name, field_name, DomainEleOp::OPROW),
143 fullStressPtr(full_stress_ptr) {}
constexpr auto field_name
OpAxisymmetricBase< A, DomainEleOp > OpBase
boost::shared_ptr< MatrixDouble > fullStressPtr

Member Function Documentation

◆ iNtegrate()

template<AssemblyType A, typename DomainEleOp >
MoFEMErrorCode MatOps::OpAxisymmetricRhs< A, DomainEleOp >::iNtegrate ( EntData row_data)
inlineoverrideprotected

Definition at line 148 of file MatAxisymmetric.hpp.

148 {
150 using DL = DataLayoutTraits<DataLayout::GaussByCoeffs>;
151 auto t_full_stress =
152 MatrixSizeHelper<GetFTensor2FromMatType<3, 3, -1, DL>, DL>::get(
154 auto t_w = OpBase::getFTensor0IntegrationWeight();
155 auto t_row_base = row_data.getFTensor0N();
158 for (int gg = 0; gg != OpBase::nbIntegrationPts; ++gg) {
159 auto t_nf = OpBase::template getNf<2>();
160 const double alpha = 2 * M_PI * t_w * OpBase::getMeasure();
161 int rr = 0;
162 for (; rr != OpBase::nbRows / 2; ++rr) {
163 t_nf(N0) += alpha * t_row_base * t_full_stress(N2, N2);
164 ++t_nf;
165 ++t_row_base;
166 }
167 for (; rr < OpBase::nbRowBaseFunctions; ++rr)
168 ++t_row_base;
169 ++t_full_stress;
170 ++t_w;
171 }
173 }
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
DataLayoutTraits< DataLayout::GaussByCoeffs > DL
Definition MatHuHu.hpp:33
decltype(GetFTensor2FromMatImpl< Tensor_Dim0, Tensor_Dim1, S, DL, M >::get(std::declval< M & >(), 0, 0)) GetFTensor2FromMatType
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
int nbRows
number of dofs on rows
int nbIntegrationPts
number of integration points
int nbRowBaseFunctions
number or row base functions

Member Data Documentation

◆ fullStressPtr

template<AssemblyType A, typename DomainEleOp >
boost::shared_ptr<MatrixDouble> MatOps::OpAxisymmetricRhs< A, DomainEleOp >::fullStressPtr
protected

Definition at line 146 of file MatAxisymmetric.hpp.


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