v0.8.23
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 [35]. 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 21 of file CoordSysMultiIndices.cpp.

22  : meshSet(meshset), tagCoordSysName(NULL) {
23  // Change those tags only by modifiers
24  // dim
25  Tag th_coord_sys_dim;
26  rval = moab.tag_get_handle("_CoordSysDim", th_coord_sys_dim);
28  rval = moab.tag_get_by_ptr(th_coord_sys_dim, &meshSet, 1,
29  (const void **)&tagCoordSysDim);
31  // Coord Sys Name
32  Tag th_coord_sys_name;
33  rval = moab.tag_get_handle("_CoordSysName", th_coord_sys_name);
35  rval = moab.tag_get_by_ptr(th_coord_sys_name, &meshset, 1,
36  (const void **)&tagCoordSysName,
39 }
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:602
static MoFEMErrorCodeGeneric< moab::ErrorCode > rval
Definition: Exceptions.hpp:84
EntityHandle meshSet
keeps entities for this meshset

Member Function Documentation

◆ get_E_Base()

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

Definition at line 98 of file CoordSysMultiIndices.hpp.

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

◆ get_e_Base()

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

Definition at line 110 of file CoordSysMultiIndices.hpp.

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

◆ get_E_DualBase()

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

Definition at line 104 of file CoordSysMultiIndices.hpp.

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

◆ get_e_DualBase()

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

Definition at line 116 of file CoordSysMultiIndices.hpp.

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

◆ 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 [35]

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

Definition at line 96 of file CoordSysMultiIndices.hpp.

96 { return tagCoordSysDim[d]; };
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 122 of file CoordSysMultiIndices.hpp.

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

◆ getName()

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

Definition at line 126 of file CoordSysMultiIndices.hpp.

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

◆ getNameRef()

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

Definition at line 123 of file CoordSysMultiIndices.hpp.

123  {
124  return boost::string_ref((char *)tagCoordSysName, tagCoordSysNameSize);
125  };
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: