v0.8.4
Public Member Functions | Public Attributes | List of all members
MoFEM::CoordSys Struct Reference

Structure for Coordinate system of two-point tensorScientific computing applications deal in physical quantities expressed as tensors: scalars such as temperature, vectors such as velocity, and second-order tensors such as stress. In practice, these are formally tensor fields: a tensor field assigns a tensor to each point in a mathematical space (typically a Euclidean space or manifold). More...

#include <src/multi_indices/CoordSysMultiIndices.hpp>

Collaboration diagram for MoFEM::CoordSys:
[legend]

Public Member Functions

 CoordSys (const Interface &moab, const EntityHandle meshset)
 
int getDim (const int d) const
 Get tensor dimension. More...
 
virtual MoFEMErrorCode get_E_Base (const double m[]) const
 
virtual MoFEMErrorCode get_E_DualBase (const double m[]) const
 
virtual MoFEMErrorCode get_e_Base (const double m[]) const
 
virtual MoFEMErrorCode get_e_DualBase (const double m[]) const
 
EntityHandle getMeshset () const
 
boost::string_ref getNameRef () const
 
std::string getName () const
 

Public Attributes

EntityHandle meshSet
 keeps entities for this meshset More...
 
const inttagCoordSysDim
 
const char * tagCoordSysName
 tag keeps name of the field More...
 
int tagCoordSysNameSize
 

Detailed Description

Structure for Coordinate system of two-point tensor

Scientific computing applications deal in physical quantities expressed as tensors: scalars such as temperature, vectors such as velocity, and second-order tensors such as stress. In practice, these are formally tensor fields: a tensor field assigns a tensor to each point in a mathematical space (typically a Euclidean space or manifold).

Because tensors have a geometric interpretation, their underlying physical meaning is independent of the coordinate system, very often on two coordinate systems in reference and current configuration, in which they are defined; the numerical value of a tensor depends on the coordinate systems, and so any numerical instantiation of a tensor field is incomplete without a specification of its coordinate system.

In this data structure a generic two-point tensors are considered, see [33]. To each field MoFEM::Field a CoordSys data structure can be attached, carrying information about tensor structure approximated by the field.

Note: Some concepts and ideas are taken from iFiedl Interface specification https://redmine.scorec.rpi.edu/anonsvn/itaps/software/trunk/tools/doxygen/html/ifield.html

Definition at line 50 of file CoordSysMultiIndices.hpp.

Constructor & Destructor Documentation

◆ CoordSys()

MoFEM::CoordSys::CoordSys ( const Interface moab,
const EntityHandle  meshset 
)

Definition at line 32 of file CoordSysMultiIndices.cpp.

32  :
33  meshSet(meshset),
34  tagCoordSysName(NULL) {
35  // Change those tags only by modifiers
36  ErrorCode rval;
37  // dim
38  Tag th_coord_sys_dim;
39  rval = moab.tag_get_handle("_CoordSysDim",th_coord_sys_dim); MOAB_THROW(rval);
40  rval = moab.tag_get_by_ptr(th_coord_sys_dim,&meshSet,1,(const void **)&tagCoordSysDim); MOAB_THROW(rval);
41  // Coord Sys Name
42  Tag th_coord_sys_name;
43  rval = moab.tag_get_handle("_CoordSysName",th_coord_sys_name); MOAB_THROW(rval);
44  rval = moab.tag_get_by_ptr(th_coord_sys_name,&meshset,1,(const void **)&tagCoordSysName,&tagCoordSysNameSize); MOAB_THROW(rval);
45 
46  }
const char * tagCoordSysName
tag keeps name of the field
#define MOAB_THROW(a)
Check error code of MoAB function and throw MoFEM exception.
Definition: definitions.h:623
EntityHandle meshSet
keeps entities for this meshset
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
Definition: Common.hpp:78

Member Function Documentation

◆ get_E_Base()

virtual MoFEMErrorCode MoFEM::CoordSys::get_E_Base ( const double  m[]) const
virtual

Definition at line 102 of file CoordSysMultiIndices.hpp.

102  {
104  SETERRQ(PETSC_COMM_SELF,MOFEM_NOT_IMPLEMENTED,"not implemented");
106  }
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:522
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return() ...
Definition: definitions.h:528

◆ get_e_Base()

virtual MoFEMErrorCode MoFEM::CoordSys::get_e_Base ( const double  m[]) const
virtual

Definition at line 114 of file CoordSysMultiIndices.hpp.

114  {
116  SETERRQ(PETSC_COMM_SELF,MOFEM_NOT_IMPLEMENTED,"not implemented");
118  }
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:522
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return() ...
Definition: definitions.h:528

◆ get_E_DualBase()

virtual MoFEMErrorCode MoFEM::CoordSys::get_E_DualBase ( const double  m[]) const
virtual

Definition at line 108 of file CoordSysMultiIndices.hpp.

108  {
110  SETERRQ(PETSC_COMM_SELF,MOFEM_NOT_IMPLEMENTED,"not implemented");
112  }
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:522
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return() ...
Definition: definitions.h:528

◆ get_e_DualBase()

virtual MoFEMErrorCode MoFEM::CoordSys::get_e_DualBase ( const double  m[]) const
virtual

Definition at line 120 of file CoordSysMultiIndices.hpp.

120  {
122  SETERRQ(PETSC_COMM_SELF,MOFEM_NOT_IMPLEMENTED,"not implemented");
124  }
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:522
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return() ...
Definition: definitions.h:528

◆ getDim()

int MoFEM::CoordSys::getDim ( const int  d) const

Get tensor dimension.

This is general two point tensor \(\mathbf{T}\) of type

\[ \left( \begin{array}{cc} q & l \\ p & m \end{array} \right) \]

at point \(\mathbf{X} \in \mathcal{B}\) over mapping

\[ \phi: \mathcal{B} \to \mathcal{S} \]

is a multilinear mapping

\[ \mathbf{T}: ( T^*_\mathbf{X}\mathcal{B}\times\dots\times T^*_\mathbf{X}\mathcal{B} ) \times ( T_\mathbf{X}\mathcal{B}\times\dots\times T_\mathbf{X}\mathcal{B} ) \times ( T^*_\mathbf{x}\mathcal{S}\times\dots\times T^*_\mathbf{x}\mathcal{S} ) \times ( T_\mathbf{x}\mathcal{B}\times\dots\times T_\mathbf{x}\mathcal{B} ) \to \mathbb{R} \]

where \(\mathbf{x} = \phi(\mathbf{X})\). See details in [33]

Parameters
d= 0,1,2,3 is equivalent to q,l,o and m respectively.

Definition at line 97 of file CoordSysMultiIndices.hpp.

97  {
98  return tagCoordSysDim[d];
99  };
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T *> &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition: dTensor0.hpp:27

◆ getMeshset()

EntityHandle MoFEM::CoordSys::getMeshset ( ) const

Definition at line 126 of file CoordSysMultiIndices.hpp.

126 { return meshSet; };
EntityHandle meshSet
keeps entities for this meshset

◆ getName()

std::string MoFEM::CoordSys::getName ( ) const

Definition at line 128 of file CoordSysMultiIndices.hpp.

128 { return std::string((char *)tagCoordSysName,tagCoordSysNameSize); };
const char * tagCoordSysName
tag keeps name of the field

◆ getNameRef()

boost::string_ref MoFEM::CoordSys::getNameRef ( ) const

Definition at line 127 of file CoordSysMultiIndices.hpp.

127 { return boost::string_ref((char *)tagCoordSysName,tagCoordSysNameSize); };
const char * tagCoordSysName
tag keeps name of the field

Member Data Documentation

◆ meshSet

EntityHandle MoFEM::CoordSys::meshSet

keeps entities for this meshset

Definition at line 52 of file CoordSysMultiIndices.hpp.

◆ tagCoordSysDim

const int* MoFEM::CoordSys::tagCoordSysDim

Definition at line 53 of file CoordSysMultiIndices.hpp.

◆ tagCoordSysName

const char* MoFEM::CoordSys::tagCoordSysName

tag keeps name of the field

Definition at line 54 of file CoordSysMultiIndices.hpp.

◆ tagCoordSysNameSize

int MoFEM::CoordSys::tagCoordSysNameSize

Definition at line 55 of file CoordSysMultiIndices.hpp.


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