Classes | Public Member Functions | Public Attributes | List of all members
MoFEM::NormElement Struct Reference

finite element to appeximate analytical solution on surface More...

#include <users_modules/helmholtz/src/NormElementObsolete.hpp>

Collaboration diagram for MoFEM::NormElement:


struct  BlockData
struct  CommonData
struct  MyTriFE
struct  MyVolumeFE
struct  OpGetFieldAtGaussPts
 opearator to caulate field value and rate of field value at Gauss points mofem_thermal_elem More...
struct  OpGetGradField1AtGaussPts
struct  OpGetGradField2AtGaussPts
 operator to calculate field gradient at Gauss points More...
struct  OpGetTetField1AtGaussPts
 operator to calculate field at Gauss pts mofem_thermal_elem More...
struct  OpGetTetField2AtGaussPts
struct  OpGetTetFieldRateAtGaussPts
 operator to calculate field rate at Gauss pts mofem_thermal_elem More...
struct  OpGetTriFieldAtGaussPts
 operator to calculate field at Gauss ptss mofem_thermal_elem More...
struct  OpLhs
 Lhs operaetar for tetrahedral used to build matrix. More...
struct  OpRhs
 Rhs operaetar used loop differences between two fields. More...

Public Member Functions

MyVolumeFEgetLoopFeRhs ()
 get rhs volume element More...
MyVolumeFEgetLoopFeLhs ()
 get lhs volume element More...
 NormElement (MoFEM::Interface &mField)
PetscErrorCode addNormElements (const string problem, string fe, const string norm_field_name, const string field1_name, const string field2_name, const string mesh_nodals_positions="MESH_NODE_POSITIONS")
PetscErrorCode setNormFiniteElementRhsOperator (string norm_field_name, string field1_name, string field2_name, Mat A, Vec &F, bool usel2, bool userela, string nodals_positions="MESH_NODE_POSITIONS")

Public Attributes

MyVolumeFE feRhs
 cauclate right hand side for tetrahedral elements More...
MyVolumeFE feLhs
CommonData commonData
map< int, BlockDatasetOfBlocks
 maps block set id with appropiate BlockData More...

Detailed Description

finite element to appeximate analytical solution on surface

Definition at line 35 of file NormElementObsolete.hpp.

Constructor & Destructor Documentation

◆ NormElement()

MoFEM::NormElement::NormElement ( MoFEM::Interface mField)

Definition at line 69 of file NormElementObsolete.hpp.

70  :
71  feRhs(mField),feLhs(mField),m_field(mField) {}
MyVolumeFE feRhs
cauclate right hand side for tetrahedral elements
MoFEM::Interface & m_field

Member Function Documentation

◆ addNormElements()

PetscErrorCode MoFEM::NormElement::addNormElements ( const string  problem,
string  fe,
const string  norm_field_name,
const string  field1_name,
const string  field2_name,
const string  mesh_nodals_positions = "MESH_NODE_POSITIONS" 

Definition at line 491 of file NormElementObsolete.hpp.

495  {
496  PetscFunctionBegin;
497  PetscErrorCode ierr;
498  ErrorCode rval;
499  ierr = m_field.add_finite_element(fe,MF_ZERO); CHKERRQ(ierr);
500  ierr = m_field.modify_finite_element_add_field_row(fe,norm_field_name); CHKERRQ(ierr);
501  ierr = m_field.modify_finite_element_add_field_col(fe,norm_field_name); CHKERRQ(ierr);
502  ierr = m_field.modify_finite_element_add_field_data(fe,norm_field_name); CHKERRQ(ierr);
504  ierr = m_field.modify_finite_element_add_field_data(fe,field1_name); CHKERRQ(ierr);
505  ierr = m_field.modify_finite_element_add_field_data(fe,field2_name); CHKERRQ(ierr);
509  if(m_field.check_field(mesh_nodals_positions)) {
510  ierr = m_field.modify_finite_element_add_field_data(fe,mesh_nodals_positions); CHKERRQ(ierr);
511  }
512  ierr = m_field.modify_problem_add_finite_element(problem,fe); CHKERRQ(ierr);
515  //Range tEts;
516  for(_IT_CUBITMESHSETS_BY_NAME_FOR_LOOP_(m_field,"MAT_NORM",it)) {
517  //rval = m_Field.get_moab().get_entities_by_type(it->get_meshset(),MBTET,tEts,true); CHKERR_PETSC(rval);
518  rval = m_field.get_moab().get_entities_by_type(it->get_meshset(),MBTET,setOfBlocks[it->get_msId()].tEts,true); CHKERR_PETSC(rval);
520  ierr = m_field.add_ents_to_finite_element_by_TETs(setOfBlocks[it->get_msId()].tEts,fe); CHKERRQ(ierr);
521  }
524  PetscFunctionReturn(0);
526  }
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string &name_row)=0
set field col which finite element use
virtual moab::Interface & get_moab()=0
Iterator that loops over Cubit BlockSet having a particular name.
virtual MoFEMErrorCode modify_problem_add_finite_element(const std::string &name_problem, const std::string &fe_name)=0
add finite element to problem, this add entities assigned to finite element to a particular problem ...
map< int, BlockData > setOfBlocks
maps block set id with appropiate BlockData
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Common.hpp:80
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
Definition: Common.hpp:78
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
MoFEM::Interface & m_field
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string &name_filed)=0
set finite element field data
virtual DEPRECATED MoFEMErrorCode add_ents_to_finite_element_by_TETs(const Range &tets, const std::string &name)=0
add TET entities from range to finite element database given by name
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string &name_row)=0
set field row which finite element use

◆ getLoopFeLhs()

MyVolumeFE& MoFEM::NormElement::getLoopFeLhs ( )

get lhs volume element

Definition at line 60 of file NormElementObsolete.hpp.

◆ getLoopFeRhs()

MyVolumeFE& MoFEM::NormElement::getLoopFeRhs ( )

get rhs volume element

Definition at line 58 of file NormElementObsolete.hpp.

◆ setNormFiniteElementRhsOperator()

PetscErrorCode MoFEM::NormElement::setNormFiniteElementRhsOperator ( string  norm_field_name,
string  field1_name,
string  field2_name,
Mat  A,
Vec &  F,
bool  usel2,
bool  userela,
string  nodals_positions = "MESH_NODE_POSITIONS" 

Definition at line 531 of file NormElementObsolete.hpp.

533  {
534  PetscFunctionBegin;
536  map<int,BlockData>::iterator sit = setOfBlocks.begin();
538  for(;sit!=setOfBlocks.end();sit++) {
540  //Calculate field values at gaussian points for field1 and field2;
541  feRhs.get_op_to_do_Rhs().push_back(new OpGetTetField1AtGaussPts(field1_name,commonData));
542  feRhs.get_op_to_do_Rhs().push_back(new OpGetTetField2AtGaussPts(field2_name,commonData));
543  feRhs.get_op_to_do_Rhs().push_back(new OpGetGradField1AtGaussPts(field1_name,commonData));
544  feRhs.get_op_to_do_Rhs().push_back(new OpGetGradField2AtGaussPts(field2_name,commonData));
546  feLhs.get_op_to_do_Lhs().push_back(new OpLhs(norm_field_name,A));
548  feRhs.get_op_to_do_Rhs().push_back(new OpRhs(norm_field_name,norm_field_name,F,commonData,usel2,userela));
549  }
551  PetscFunctionReturn(0);
552 }
map< int, BlockData > setOfBlocks
maps block set id with appropiate BlockData
MyVolumeFE feRhs
cauclate right hand side for tetrahedral elements

Member Data Documentation

◆ commonData

CommonData MoFEM::NormElement::commonData

Definition at line 92 of file NormElementObsolete.hpp.

◆ feLhs

MyVolumeFE MoFEM::NormElement::feLhs

Definition at line 59 of file NormElementObsolete.hpp.

◆ feRhs

MyVolumeFE MoFEM::NormElement::feRhs

cauclate right hand side for tetrahedral elements

Definition at line 57 of file NormElementObsolete.hpp.

◆ m_field

MoFEM::Interface& MoFEM::NormElement::m_field

Definition at line 68 of file NormElementObsolete.hpp.

◆ setOfBlocks

map<int,BlockData> MoFEM::NormElement::setOfBlocks

maps block set id with appropiate BlockData

Definition at line 97 of file NormElementObsolete.hpp.

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