#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 |