v0.14.0 |
Application of mix transport data structure. More...
Public Member Functions | |
MyTransport (MoFEM::Interface &m_field) | |
MoFEMErrorCode | getSource (EntityHandle ent, const double x, const double y, const double z, double &flux) |
set source term More... | |
MoFEMErrorCode | getBcOnValues (const EntityHandle ent, const double x, const double y, const double z, double &value) |
MoFEMErrorCode | getBcOnFluxes (const EntityHandle ent, const double x, const double y, const double z, double &flux) |
essential (Neumann) boundary condition (set fluxes) More... | |
MyTransport (MoFEM::Interface &m_field, BcFluxMap &bc_flux_map) | |
MoFEMErrorCode | getSource (EntityHandle ent, const double x, const double y, const double z, double &flux) |
set source term More... | |
MoFEMErrorCode | getBcOnValues (const EntityHandle ent, const double x, const double y, const double z, double &value) |
natural (Dirihlet) boundary conditions (set values) More... | |
MoFEMErrorCode | getBcOnFluxes (const EntityHandle ent, const double x, const double y, const double z, double &flux) |
essential (Neumann) boundary condition (set fluxes) More... | |
MoFEMErrorCode | addBoundaryElements (BitRefLevel &ref_level) |
set-up boundary conditions More... | |
MoFEMErrorCode | refineMesh (MixTransportElement &ufe, const int nb_levels, const int order) |
Refine mesh. More... | |
MoFEMErrorCode | squashBits () |
Squash bits of entities. More... | |
MoFEMErrorCode | updateMeshsetsFieldsAndElements (const int nb_levels) |
update meshsets with new entities after mesh refinement More... | |
Public Member Functions inherited from MixTransport::MixTransportElement | |
MixTransportElement (MoFEM::Interface &m_field) | |
construction of this data structure More... | |
virtual | ~MixTransportElement () |
destructor More... | |
MoFEMErrorCode | getDirichletBCIndices (IS *is) |
get dof indices where essential boundary conditions are applied More... | |
virtual MoFEMErrorCode | getResistivity (const EntityHandle ent, const double x, const double y, const double z, MatrixDouble3by3 &inv_k) |
natural (Dirichlet) boundary conditions (set values) More... | |
virtual MoFEMErrorCode | getBcOnValues (const EntityHandle ent, const int gg, const double x, const double y, const double z, double &value) |
evaluate natural (Dirichlet) boundary conditions More... | |
MoFEMErrorCode | addFields (const std::string &values, const std::string &fluxes, const int order) |
Add fields to database. More... | |
MoFEMErrorCode | addFiniteElements (const std::string &fluxes_name, const std::string &values_name) |
add finite elements More... | |
MoFEMErrorCode | buildProblem (BitRefLevel &ref_level) |
Build problem. More... | |
MoFEMErrorCode | postProc (const string out_file) |
Post process results. More... | |
MoFEMErrorCode | createMatrices () |
create matrices More... | |
MoFEMErrorCode | solveLinearProblem () |
solve problem More... | |
MoFEMErrorCode | calculateResidual () |
calculate residual More... | |
MoFEMErrorCode | evaluateError () |
Calculate error on elements. More... | |
MoFEMErrorCode | destroyMatrices () |
destroy matrices More... | |
Public Attributes | |
BcFluxMap & | bcFluxMap |
EntityHandle | lastEnt |
double | lastFlux |
Public Attributes inherited from MixTransport::MixTransportElement | |
MoFEM::Interface & | mField |
MyVolumeFE | feVol |
Instance of volume element. More... | |
MyTriFE | feTri |
Instance of surface element. More... | |
VectorDouble | valuesAtGaussPts |
values at integration points on element More... | |
MatrixDouble | valuesGradientAtGaussPts |
gradients at integration points on element More... | |
VectorDouble | divergenceAtGaussPts |
divergence at integration points on element More... | |
MatrixDouble | fluxesAtGaussPts |
fluxes at integration points on element More... | |
set< int > | bcIndices |
std::map< int, BlockData > | setOfBlocks |
maps block set id with appropriate BlockData More... | |
Vec | D |
Vec | D0 |
Vec | F |
Mat | Aij |
map< double, EntityHandle > | errorMap |
double | sumErrorFlux |
double | sumErrorDiv |
double | sumErrorJump |
Application of mix transport data structure.
define sources and other stuff
MixTransportElement is a class collecting functions, operators and data for mix implementation of transport element. See there to learn how elements are created or how operators look like.
Some methods in MixTransportElement are abstract, f.e. user need to implement own source therm.
MixTransportElement is a class collecting functions, operators and data for mix implementation of transport element. See there to learn how elements are created or how operators look like.
Some methods in MixTransportElement are abstract, f.e. user need to implement own source therm.
Definition at line 24 of file mix_transport.cpp.
|
inline |
Definition at line 26 of file mix_transport.cpp.
|
inline |
Definition at line 56 of file h_adaptive_transport.cpp.
|
inline |
set-up boundary conditions
ref_level | mesh refinement level |
Definition at line 132 of file h_adaptive_transport.cpp.
|
inlinevirtual |
essential (Neumann) boundary condition (set fluxes)
ent | handle to finite element entity |
x | coord |
y | coord |
z | coord |
flux | reference to flux which is set by function |
Reimplemented from MixTransport::MixTransportElement.
Definition at line 43 of file mix_transport.cpp.
|
inlinevirtual |
essential (Neumann) boundary condition (set fluxes)
ent | handle to finite element entity |
x | coord |
y | coord |
z | coord |
flux | reference to flux which is set by function |
Reimplemented from MixTransport::MixTransportElement.
Definition at line 101 of file h_adaptive_transport.cpp.
|
inline |
Definition at line 36 of file mix_transport.cpp.
|
inline |
natural (Dirihlet) boundary conditions (set values)
ent | handle to finite element entity |
x | coord |
y | coord |
z | coord |
value | reference to value set by function |
Definition at line 85 of file h_adaptive_transport.cpp.
|
inlinevirtual |
set source term
ent | handle to entity on which function is evaluated |
x | coord |
y | coord |
z | coord |
flux | reference to source term set by function |
Reimplemented from MixTransport::MixTransportElement.
Definition at line 28 of file mix_transport.cpp.
|
inlinevirtual |
set source term
ent | handle to entity on which function is evaluated |
x | coord |
y | coord |
z | coord |
flux | reference to source term set by function |
Reimplemented from MixTransport::MixTransportElement.
Definition at line 69 of file h_adaptive_transport.cpp.
|
inline |
Refine mesh.
ufe | general data structure |
nb_levels | number of refinement levels |
order | set order of approximation |
Refinement of could result in distorted mesh, for example, imagine when you have two levels of non-uniform refinement. Some tetrahedra on the mesh at first refinement instance are only refined by splitting subset of edges on it. Then refined child tetrahedra usually will have worse quality than quality of parent element. Refining such element in subsequent mesh refinement, potentially will deteriorate elements quality even worse. To prevent that adding new refinement level, recreate whole hierarchy of meshes.
Note on subsequent improvement could include refinement of tetrahedra from different levels, including initial mesh. So refinement two could split elements created during refinement one and also split elements from an initial mesh.
That adding the new refinement level creates refinement hierarchy of meshes from a scratch, not adding to existing one.
Entities from previous hierarchy are used in that process, but bit levels on those entities are squashed.
Definition at line 206 of file h_adaptive_transport.cpp.
|
inline |
Squash bits of entities.
Information about hierarchy of meshsets is lost, but entities are not deleted from the mesh. After squash entities bits, new hierarchy can be created.
Definition at line 313 of file h_adaptive_transport.cpp.
|
inline |
update meshsets with new entities after mesh refinement
nb_levels | nb_levels |
order | appropriate order |
Definition at line 343 of file h_adaptive_transport.cpp.
BcFluxMap& MyTransport::bcFluxMap |
Definition at line 52 of file h_adaptive_transport.cpp.
EntityHandle MyTransport::lastEnt |
Definition at line 53 of file h_adaptive_transport.cpp.
double MyTransport::lastFlux |
Definition at line 54 of file h_adaptive_transport.cpp.