v0.14.0
Classes | Public Member Functions | Public Attributes | Private Attributes | List of all members
NeumannForcesSurfaceComplexForLazy Struct Reference

NonLinear surface pressure element (obsolete implementation) More...

#include <users_modules/basic_finite_elements/src/SurfacePressureComplexForLazy.hpp>

Collaboration diagram for NeumannForcesSurfaceComplexForLazy:
[legend]

Classes

struct  AuxMethodMaterial
 
struct  AuxMethodSpatial
 
struct  MyTriangleSpatialFE
 

Public Member Functions

MoFEMErrorCode setForceScale (double scale)
 
MyTriangleSpatialFEgetLoopSpatialFe ()
 
 NeumannForcesSurfaceComplexForLazy (MoFEM::Interface &m_field, Mat _Aij, Vec _F, double *scale_lhs, double *scale_rhs, std::string spatial_field_name="SPATIAL_POSITION", std::string material_field_name="MESH_NODE_POSITIONS")
 
 NeumannForcesSurfaceComplexForLazy (MoFEM::Interface &m_field, Mat _Aij, Vec _F, std::string spatial_field_name="SPATIAL_POSITION", std::string material_field_name="MESH_NODE_POSITIONS")
 

Public Attributes

MoFEM::InterfacemField
 
MyTriangleSpatialFE feSpatial
 
Tag thScale
 
doublesCale
 

Private Attributes

const std::string spatialField
 
const std::string materialField
 

Detailed Description

NonLinear surface pressure element (obsolete implementation)

Todo:
This is old implementation, need to be reimplemented, using auto-differentiation. It is well tested and works. well.

Definition at line 16 of file SurfacePressureComplexForLazy.hpp.

Constructor & Destructor Documentation

◆ NeumannForcesSurfaceComplexForLazy() [1/2]

NeumannForcesSurfaceComplexForLazy::NeumannForcesSurfaceComplexForLazy ( MoFEM::Interface m_field,
Mat  _Aij,
Vec  _F,
double scale_lhs,
double scale_rhs,
std::string  spatial_field_name = "SPATIAL_POSITION",
std::string  material_field_name = "MESH_NODE_POSITIONS" 
)

Definition at line 576 of file SurfacePressureComplexForLazy.cpp.

580  : mField(m_field), feSpatial(m_field, _Aij, _F, scale_lhs, scale_rhs,
581  spatial_field_name, material_field_name),
582  spatialField(spatial_field_name), materialField(material_field_name) {}

◆ NeumannForcesSurfaceComplexForLazy() [2/2]

NeumannForcesSurfaceComplexForLazy::NeumannForcesSurfaceComplexForLazy ( MoFEM::Interface m_field,
Mat  _Aij,
Vec  _F,
std::string  spatial_field_name = "SPATIAL_POSITION",
std::string  material_field_name = "MESH_NODE_POSITIONS" 
)

Definition at line 546 of file SurfacePressureComplexForLazy.cpp.

549  : mField(m_field), feSpatial(m_field, _Aij, _F, NULL, NULL,
550  spatial_field_name, material_field_name),
551  spatialField(spatial_field_name), materialField(material_field_name) {
552 
553  double def_scale = 1.;
554  const EntityHandle root_meshset = mField.get_moab().get_root_set();
555  CHKERR mField.get_moab().tag_get_handle(
556  "_LoadFactor_Scale_", 1, MB_TYPE_DOUBLE, thScale,
557  MB_TAG_CREAT | MB_TAG_EXCL | MB_TAG_MESH, &def_scale);
558  if (rval == MB_ALREADY_ALLOCATED) {
559  rval = mField.get_moab().tag_get_by_ptr(thScale, &root_meshset, 1,
560  (const void **)&sCale);
561  MOAB_THROW(rval);
562  } else {
563  MOAB_THROW(rval);
564  rval =
565  mField.get_moab().tag_set_data(thScale, &root_meshset, 1, &def_scale);
566  MOAB_THROW(rval);
567  rval = mField.get_moab().tag_get_by_ptr(thScale, &root_meshset, 1,
568  (const void **)&sCale);
569  MOAB_THROW(rval);
570  }
571 
574 }

Member Function Documentation

◆ getLoopSpatialFe()

MyTriangleSpatialFE& NeumannForcesSurfaceComplexForLazy::getLoopSpatialFe ( )
inline

Definition at line 163 of file SurfacePressureComplexForLazy.hpp.

163 { return feSpatial; }

◆ setForceScale()

MoFEMErrorCode NeumannForcesSurfaceComplexForLazy::setForceScale ( double  scale)
inline

Definition at line 157 of file SurfacePressureComplexForLazy.hpp.

157  {
159  *sCale = scale;
161  }

Member Data Documentation

◆ feSpatial

MyTriangleSpatialFE NeumannForcesSurfaceComplexForLazy::feSpatial

Definition at line 152 of file SurfacePressureComplexForLazy.hpp.

◆ materialField

const std::string NeumannForcesSurfaceComplexForLazy::materialField
private

Definition at line 176 of file SurfacePressureComplexForLazy.hpp.

◆ mField

MoFEM::Interface& NeumannForcesSurfaceComplexForLazy::mField

Definition at line 151 of file SurfacePressureComplexForLazy.hpp.

◆ sCale

double* NeumannForcesSurfaceComplexForLazy::sCale

Definition at line 156 of file SurfacePressureComplexForLazy.hpp.

◆ spatialField

const std::string NeumannForcesSurfaceComplexForLazy::spatialField
private

Definition at line 175 of file SurfacePressureComplexForLazy.hpp.

◆ thScale

Tag NeumannForcesSurfaceComplexForLazy::thScale

Definition at line 154 of file SurfacePressureComplexForLazy.hpp.


The documentation for this struct was generated from the following files:
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:460
NeumannForcesSurfaceComplexForLazy::spatialField
const std::string spatialField
Definition: SurfacePressureComplexForLazy.hpp:175
EntityHandle
NeumannForcesSurfaceComplexForLazy::sCale
double * sCale
Definition: SurfacePressureComplexForLazy.hpp:156
NeumannForcesSurfaceComplexForLazy::MyTriangleSpatialFE::sCaleLhs
double * sCaleLhs
Definition: SurfacePressureComplexForLazy.hpp:41
_F
#define _F(n)
Definition: quad.c:25
NeumannForcesSurfaceComplexForLazy::materialField
const std::string materialField
Definition: SurfacePressureComplexForLazy.hpp:176
MOAB_THROW
#define MOAB_THROW(err)
Check error code of MoAB function and throw MoFEM exception.
Definition: definitions.h:554
scale
double scale
Definition: plastic.cpp:119
NeumannForcesSurfaceComplexForLazy::feSpatial
MyTriangleSpatialFE feSpatial
Definition: SurfacePressureComplexForLazy.hpp:152
MoFEM::Exceptions::rval
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
Definition: Exceptions.hpp:74
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:548
MoFEM::CoreInterface::get_moab
virtual moab::Interface & get_moab()=0
NeumannForcesSurfaceComplexForLazy::MyTriangleSpatialFE::sCaleRhs
double * sCaleRhs
Definition: SurfacePressureComplexForLazy.hpp:42
NeumannForcesSurfaceComplexForLazy::thScale
Tag thScale
Definition: SurfacePressureComplexForLazy.hpp:154
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:453
NeumannForcesSurfaceComplexForLazy::mField
MoFEM::Interface & mField
Definition: SurfacePressureComplexForLazy.hpp:151