#include <space.hh>
Public Types | |
typedef concepts::Scan< hp3D::Element< Real > > | Scan |
typedef hp3D::TraceSpace | TraceSpaceT |
typedef ElementWithCell< Real > | type |
typedef Scan< ElementWithCell< Real > > | Scanner |
Public Member Functions | |
Space (concepts::Mesh3 &msh, uint l, uint p, concepts::BoundaryConditions *bc=0, concepts::CellConditions *cc=0) | |
Space (const Space &spc) | |
Copy constructor. | |
virtual uint | dim () const |
Returns the dimension of the space. | |
virtual uint | nelm () const |
Returns the number of elements in the space. | |
virtual Scan * | scan () const |
Returns a scanner to iterate over the elements of the space. | |
virtual const concepts::BoundaryConditions * | bc () const |
uint | dim () |
uint | nelm () |
Scan * | scan () |
const concepts::BoundaryConditions * | bc () |
void | getPmax (const concepts::Hexahedron &cntr, ushort Pmax[3]) const |
void | setDim (uint dim) |
virtual void | adjust (const concepts::Element< Real > &elm, const concepts::AdaptiveAdjustP< 3 > &a) |
Space | rebuild () |
const std::unique_ptr< concepts::SMatrixBase< Real > > * | getSmatrices (const concepts::Hex3dSubdivision *subdiv) const |
Returns the list of matrices matching the subdivision type subdiv . | |
void | recomputeSmatrices (const Hexahedron *elm) const |
void | recomputeShapefunctions () |
virtual uint | getOutputDimension () const |
Returns the default output dimension, when we consider plotting a real-valued operator on this space. | |
virtual void | adjust (const Element< Real > &elm, const concepts::AdaptiveAdjustP< 3 > &a)=0 |
Static Public Member Functions | |
Timing Interface | |
These functions are used to get timings from class internal computations. The values are stored in a user defined concepts::InOutParameters structure in different arrays (see concepts::ResultsTable table;
table.addMap(concepts::ResultsTable::DOUBLE, "jacobian", output);
table.addMap(concepts::ResultsTable::DOUBLE, "whole_sumfact", output);
std::ofstream ofs("table.gnuplot");
ofs << std::setprecision(20);
table.print<concepts::ResultsTable::GNUPLOT>(ofs);
Definition resultsTable.hh:23 | |
static void | setTimings (concepts::InOutParameters *timings) |
static bool | timings () |
Friends | |
class | BuildDofsBase |
Strategies to Build the Degrees of Freedom | |
void | buildVertexDofs (const BuildDofsBase &b) |
void | buildEdgeDofs (const BuildDofsBase &b) |
void | buildFaceDofs (const BuildDofsBase &b) |
void | buildInnerDofs (const BuildDofsBase &b) |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. | |
A 3D hp FEM space with continuous, picewise polynomial basis functions. Currently, only hexahedra are possible.
space.cc
file), see setTimings()
and timings()
.typedef concepts::Scan<hp3D::Element<Real> > hp3D::Space::Scan |
|
inherited |
|
inherited |
hp3D::Space::Space | ( | concepts::Mesh3 & | msh, |
uint | l, | ||
uint | p, | ||
concepts::BoundaryConditions * | bc = 0 , |
||
concepts::CellConditions * | cc = 0 |
||
) |
Constructor. Scans the mesh and sets the cells in the mesh active and the level of refinement and the polynomial degree in all cells to the given values. rebuild_
is set to true, ie. if the mesh is used it will firstly be rebuilt.
msh | The domain of interest partitioned into a mesh. |
l | Level of refinement |
p | Degree of the polynomials to be used. |
bc | Boundary conditions |
cc | Cell conditions |
|
pure virtualinherited |
Adjusts the space in the next rebuild step for this element.
|
inline |
|
inlinevirtual |
void hp3D::Space::buildEdgeDofs | ( | const BuildDofsBase & | b | ) |
Change the strategy how the degrees of freedom for the edge are built. The default strategy is BuildEdgeDofs. You can change this strategy any time you chose.
buildEdgeDofs_ is reset with a clone of b
.
b | New strategy |
void hp3D::Space::buildFaceDofs | ( | const BuildDofsBase & | b | ) |
Change the strategy how the degrees of freedom for the face are built. The default strategy is BuildFaceDofs. You can change this strategy any time you chose.
buildFaceDofs_ is reset with a clone of b
.
b | New strategy |
void hp3D::Space::buildInnerDofs | ( | const BuildDofsBase & | b | ) |
Change the strategy how the degrees of freedom for the interior are built. The default strategy is BuildInnerDofs. You can change this strategy any time you chose.
buildInnerDofs_ is reset with a clone of b
.
b | New strategy |
void hp3D::Space::buildVertexDofs | ( | const BuildDofsBase & | b | ) |
Change the strategy how the degrees of freedom for the vertices are built. The default strategy is BuildVertexDofs. You can change this strategy any time you chose.
buildVertexDofs_ is reset with a clone of b
.
b | New strategy |
|
inlinevirtual |
Returns the dimension of the space.
Implements concepts::SpaceOnCells< Real >.
|
inlinevirtualinherited |
Returns the default output dimension, when we consider plotting a real-valued operator on this space.
Reimplemented in hp2D::hpAdaptiveSpaceHCurl, and hp2Dedge::Space.
|
inline |
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from concepts::SpaceOnCells< Real >.
|
inlinevirtual |
Returns the number of elements in the space.
Implements concepts::SpaceOnCells< Real >.
Space hp3D::Space::rebuild | ( | ) |
Rebuilds the space after an adjustment with adjust
.
Steps:
meshAndPoly_
for every cell in the coarse mesh. cellList_
, faceList_
, faceListEdg_
, edgeList_
, edgeListVtx_
, and vertexList_
by calling createCellList_
, createEdgFaceList_
and createVtxEdgList_
for every cell in the coarse mesh. FaceData::checkRelatedFaces
, EdgeData::checkRelatedEdges
, EdgeData::checkRelations
, VertexData::checkRelations
in order to find the supports of the basis functions (which have to be continuous). enrichElm_
for every cell in the coarse mesh. buildElements_
for every cell in the coarse mesh. They all work recursively and rebuild the space.
At the end of this routine, the information in adj_
, ctrl0_
, ctrl1_
, ctrl2_
, cellList_
, faceList_
, faceListEdg_
, edgeList_
, edgeListVtx_
and vertexList_
is deleted. Just the list of elements in elm_
and ctrl3_
is kept.
void hp3D::Space::recomputeShapefunctions | ( | ) |
Recompute shape functions, e.g. for other abscissas redefined through setIntegrationRule
void hp3D::Space::recomputeSmatrices | ( | const Hexahedron * | elm | ) | const |
Checks if the S matrices need to be recomputed and does so if necessary.
elm | Element which the S matrices are needed for (the polynomial degrees are important) |
|
inline |
|
inlinevirtual |
Returns a scanner to iterate over the elements of the space.
Implements concepts::SpaceOnCells< Real >.
|
static |
Sets the class to store the timing values in. Additionally, the timeCntr_
is reset to 0. This counter is used to fill in the values into the arrays listed below in subsequent calls. The following timings are taken and stored in timings:
meshAndPoly_
in meshAndPoly
createTopologyLists
checkRelatedFaces
checkRelatedEdges
checkRelatedVertices
enrichElements
buildElements
|
static |
Returns true if the class is able to do timings. The ability to do timings depends on a compiler switch in space.cc
file.
|
friend |