v0.14.0
Public Member Functions | Private Attributes | List of all members
FreeSurfaceOps::OpRhsG< I > Struct Template Reference

#include <users_modules/tutorials/vec-5/src/FreeSurfaceOps.hpp>

Inheritance diagram for FreeSurfaceOps::OpRhsG< I >:
[legend]
Collaboration diagram for FreeSurfaceOps::OpRhsG< I >:
[legend]

Public Member Functions

 OpRhsG (const std::string field_name, boost::shared_ptr< VectorDouble > h_ptr, boost::shared_ptr< MatrixDouble > grad_h_ptr, boost::shared_ptr< VectorDouble > g_ptr)
 
MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &data)
 

Private Attributes

boost::shared_ptr< VectorDouble > hPtr
 
boost::shared_ptr< MatrixDouble > gradHPtr
 
boost::shared_ptr< VectorDouble > gPtr
 

Detailed Description

template<bool I>
struct FreeSurfaceOps::OpRhsG< I >

Examples
free_surface.cpp.

Definition at line 1182 of file FreeSurfaceOps.hpp.

Constructor & Destructor Documentation

◆ OpRhsG()

template<bool I>
FreeSurfaceOps::OpRhsG< I >::OpRhsG ( const std::string  field_name,
boost::shared_ptr< VectorDouble >  h_ptr,
boost::shared_ptr< MatrixDouble >  grad_h_ptr,
boost::shared_ptr< VectorDouble >  g_ptr 
)
inline

Definition at line 1184 of file FreeSurfaceOps.hpp.

1187  : AssemblyDomainEleOp(field_name, field_name, AssemblyDomainEleOp::OPROW),
1188  hPtr(h_ptr), gradHPtr(grad_h_ptr), gPtr(g_ptr) {}

Member Function Documentation

◆ iNtegrate()

template<bool I>
MoFEMErrorCode FreeSurfaceOps::OpRhsG< I >::iNtegrate ( EntitiesFieldData::EntData data)
inline

Definition at line 1190 of file FreeSurfaceOps.hpp.

1190  {
1192 
1193  const double vol = getMeasure();
1194  auto t_h = getFTensor0FromVec(*hPtr);
1195  auto t_grad_h = getFTensor1FromMat<SPACE_DIM>(*gradHPtr);
1196  auto t_g = getFTensor0FromVec(*gPtr);
1197  auto t_coords = getFTensor1CoordsAtGaussPts();
1198 
1199  auto t_base = data.getFTensor0N();
1200  auto t_diff_base = data.getFTensor1DiffN<SPACE_DIM>();
1201  auto t_w = getFTensor0IntegrationWeight();
1202 
1203  for (int gg = 0; gg != nbIntegrationPts; ++gg) {
1204 
1205  const double r = t_coords(0);
1206  const double alpha = t_w * vol * cylindrical(r);
1207 
1208  double set_h;
1209  if constexpr (I)
1210  set_h = init_h(t_coords(0), t_coords(1), t_coords(2));
1211  else
1212  set_h = t_h;
1213 
1214  const double f = get_f(set_h);
1215 
1216  int bb = 0;
1217  for (; bb != nbRows; ++bb) {
1218  locF[bb] += (t_base * alpha) * (t_g - f);
1219  locF[bb] -= (t_diff_base(i) * (eta2 * alpha)) * t_grad_h(i);
1220  ++t_base;
1221  ++t_diff_base;
1222  }
1223 
1224  for (; bb < nbRowBaseFunctions; ++bb) {
1225  ++t_base;
1226  ++t_diff_base;
1227  }
1228 
1229  ++t_h;
1230  ++t_grad_h;
1231  ++t_g;
1232 
1233  ++t_coords;
1234  ++t_w;
1235  }
1236 
1238  }

Member Data Documentation

◆ gPtr

template<bool I>
boost::shared_ptr<VectorDouble> FreeSurfaceOps::OpRhsG< I >::gPtr
private

Definition at line 1243 of file FreeSurfaceOps.hpp.

◆ gradHPtr

template<bool I>
boost::shared_ptr<MatrixDouble> FreeSurfaceOps::OpRhsG< I >::gradHPtr
private

Definition at line 1242 of file FreeSurfaceOps.hpp.

◆ hPtr

template<bool I>
boost::shared_ptr<VectorDouble> FreeSurfaceOps::OpRhsG< I >::hPtr
private

Definition at line 1241 of file FreeSurfaceOps.hpp.


The documentation for this struct was generated from the following file:
init_h
auto init_h
Initialisation function.
Definition: free_surface.cpp:295
FreeSurfaceOps::OpRhsG::gradHPtr
boost::shared_ptr< MatrixDouble > gradHPtr
Definition: FreeSurfaceOps.hpp:1242
get_f
auto get_f
Definition: free_surface.cpp:221
FreeSurfaceOps::OpRhsG::hPtr
boost::shared_ptr< VectorDouble > hPtr
Definition: FreeSurfaceOps.hpp:1241
sdf.r
int r
Definition: sdf.py:8
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
cylindrical
auto cylindrical
Definition: free_surface.cpp:187
SPACE_DIM
constexpr int SPACE_DIM
Definition: child_and_parent.cpp:16
MoFEM::getFTensor0FromVec
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
Definition: Templates.hpp:135
eta2
double eta2
Definition: free_surface.cpp:171
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
HenckyOps::f
auto f
Definition: HenckyOps.hpp:15
AssemblyDomainEleOp
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp
Definition: tensor_divergence_operator.cpp:59
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
FreeSurfaceOps::OpRhsG::gPtr
boost::shared_ptr< VectorDouble > gPtr
Definition: FreeSurfaceOps.hpp:1243