hpAdaptiveSpaceHCurl.hh

Go to the documentation of this file.
1 
8 #ifndef hpAdaptSpace2DHCurl_hh
9 #define hpAdaptSpace2DHCurl_hh
10 
11 #include "basics/typedefs.hh"
12 #include "toolbox/inputOutput.hh"
13 #include "formula/boundary.hh"
14 #include "hp2D/hpAdaptiveSpace.hh"
15 #include "hp2D/refinePreBuilder.hh"
17 
18 namespace concepts {
19 
20  // forward declarations
21  template<class F>
22  class SMatrixBase;
23 
24  class SMatrix1D;
25 }
26 
27 namespace hp2Dedge {
28 
29  // forward declarations
30  template<class F>
31  class Quad;
32 }
33 
34 namespace hp2D {
35 
36  class hpAdaptiveSpaceHCurl;
37 
38  using concepts::Real;
39 
40  // ***************************************** hpAdaptiveSpaceHCurlFromInput **
41 
59  hpAdaptiveSpaceHCurl*
61  const concepts::InOutParameters input,
62  bool verbose = false);
63 
64  // ************************************************** hpAdaptiveSpaceHCurl **
65 
66  class hpAdaptiveSpaceHCurl : public hpAdaptiveSpace<Real> {
67  public:
69 
81  hpAdaptiveSpaceHCurl(concepts::Mesh2& msh, uint l, uint p,
83  concepts::CellConditions* cc = 0);
90  const concepts::InOutParameters input);
109  concepts::CellConditions* cc = 0, uint spcNo = 0,
110  uint* offset = 0, uint* idx = 0);
116 
130  }
142  }
144 
149  protected:
150  virtual std::ostream& info(std::ostream& os) const;
151  private:
157  concepts::TColumn<Real>* T1) const;
162  virtual concepts::TColumn<Real>*
164  const concepts::TColumn<Real>* T0,
165  const concepts::TColumn<Real>* T1);
173 
175  std::unique_ptr<concepts::SMatrix1D> S1left_t_, S1right_t_, S1left_n_,
177 
180  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2H_X_[2];
181  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2H_Y_[2];
182  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2V_X_[2];
183  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2V_Y_[2];
184 
188  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2H_[2];
192  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices2V_[2];
196  std::unique_ptr<concepts::SMatrixBase<Real> > Smatrices4_[4];
197 
198  };
199 
200 } // namespace hp2D
201 
202 #endif // hpAdaptSpace2DHCurl_hh
A column of a T matrix.
Definition: analytical.hh:18
std::unique_ptr< concepts::SMatrix1D > S1left_t_
S matrices in 1D.
std::unique_ptr< concepts::SMatrix1D > S1left_n_
S matrices in 1D.
virtual std::ostream & info(std::ostream &os) const
S matrices in 1D.
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2V_[2]
S matrices for vertical subdivision.
std::unique_ptr< concepts::SMatrix1D > S1right_t_
S matrices in 1D.
Holds parameters in hashes.
Definition: inputOutput.hh:75
Helper class for building 2D hp-FEM spaces (space pre builder).
concepts::Scan< hp2D::Element< Real > > Scan
virtual uint offset() const
hp-adaptive space with 2D elements.
void recomputeSmatrices_(const hp2Dedge::Quad< Real > &elm)
Checks if the S matrices need to be recomputed and does so if necessary.
2D hp-FEM for H1-conforming elements.
std::unique_ptr< concepts::SMatrix1D > S1right_n_
S matrices in 1D.
virtual concepts::TColumn< Real > * applySmatrices_(const concepts::Element< Real > &elm, uint i, const concepts::TColumn< Real > *T0, const concepts::TColumn< Real > *T1)
Apply i -th S matrix to T-Columns T0 and T1 of the element elm, where i is the number of child of elm...
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2V_Y_[2]
S matrices in 1D.
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2H_[2]
S matrices for horizontal subdivision.
void setBuildEdgeDofs_(const BuildTColumnsBase< Real > *b)
Change the strategy how the degrees of freedom for the edge are built.
void recomputeShapefunctions()
Recompute shape functions, e.g.
Base class for classes for building T columns for elements in a space with help of a 2D space pre bui...
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices4_[4]
S matrices for subdivision into 4 quads.
void buildEdgeDofs(const BuildTColumnsBase< Real > *b)
Change the strategy how the degrees of freedom for the edge are built.
An abstract class for scanning a mesh (a set of cells) or a space (a set of elements).
An abstract class for 2D meshes.
Definition: mesh.hh:103
Two dimensional cell.
Definition: cell.hh:89
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2H_Y_[2]
S matrices in 1D.
virtual Element< Real > * newElement_(concepts::Cell2 &cell, ushort *pMax, concepts::TColumn< Real > *T0, concepts::TColumn< Real > *T1) const
Creates and returns an element for cell.
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2H_X_[2]
S matrices for tangential and normal component for different subdivisions.
void setBuildInnerDofs_(const BuildTColumnsBase< Real > *b)
Change the strategy how the degrees of freedom for the interior are built.
unsigned short ushort
Abbreviation for unsigned short.
Definition: typedefs.hh:48
hpAdaptiveSpaceHCurl * hpAdaptiveSpaceHCurlFromInput(concepts::Mesh2 &msh, const concepts::InOutParameters input, bool verbose=false)
Builds and refines a hp-adaptive H(curl)-conforming space with use of input parameters.
hpAdaptiveSpaceHCurl(concepts::Mesh2 &msh, const concepts::InOutParameters input)
Constructor with boundary conditions and refinement strategy from input parameters.
void buildInnerDofs(const BuildTColumnsBase< Real > *b)
Change the strategy how the degrees of freedom for the interior are built.
std::unique_ptr< concepts::SMatrixBase< Real > > Smatrices2V_X_[2]
S matrices in 1D.
hpAdaptiveSpaceHCurl(concepts::Mesh2 &msh, uint l, uint p, concepts::BoundaryConditions *bc=0, concepts::CellConditions *cc=0)
Constructor.
hpAdaptiveSpaceHCurl(hpFull &prebuild, concepts::BoundaryConditions *bc=0, concepts::CellConditions *cc=0, uint spcNo=0, uint *offset=0, uint *idx=0)
Constructor for using same mesh and distribution of degrees of freedom object as another space.
hpAdaptiveSpaceHCurl(const hpAdaptiveSpaceHCurl &spc)
Copy constructor.
double Real
Type normally used for a floating point number.
Definition: typedefs.hh:36
Basic namespace for Concepts-2.
Definition: pml_formula.h:16
hp 2D edge elements for electromagnetics.
Definition: bf_advection.hh:37
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich