│ │ │ │ │ -_6_3 struct _N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x
│ │ │ │ │ -64 {
│ │ │ │ │ -_6_5 static constexpr GeometryType _g_e_o_m_e_t_r_y = geometryId;
│ │ │ │ │ -_6_6 static const unsigned int _d_i_m = _g_e_o_m_e_t_r_y._d_i_m();
│ │ │ │ │ -_6_7 typedef _M_u_l_t_i_I_n_d_e_x_<_d_i_m_,_F_i_e_l_d_> _M_I;
│ │ │ │ │ -_6_8 typedef _M_o_n_o_m_i_a_l_B_a_s_i_s_<_g_e_o_m_e_t_r_y_I_d_,_M_I_> _M_I_B_a_s_i_s;
│ │ │ │ │ -_6_9 _N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x(std::size_t order)
│ │ │ │ │ -70 {
│ │ │ │ │ -71 /*
│ │ │ │ │ -72 * Construction of Nedelec elements see "Mixed Finite Elements in \R^3" by
│ │ │ │ │ -Nedelec, 1980.
│ │ │ │ │ -73 *
│ │ │ │ │ -74 * Let $\P_{n,k}$ be the space of polynomials in $n$ variables with degree
│ │ │ │ │ -$\leq k$.
│ │ │ │ │ -75 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined
│ │ │ │ │ -as
│ │ │ │ │ -76 *
│ │ │ │ │ -77 * \begin{equation*}
│ │ │ │ │ -78 * Ned_k := (\P_{n,k-1})^n \oplus \{p \in (\P_{n,k})^n: =0 \}
│ │ │ │ │ -79 * \end{equation*}
│ │ │ │ │ -80 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.
│ │ │ │ │ -81 *
│ │ │ │ │ -82 * For $Ned_k$ holds
│ │ │ │ │ -83 * \begin{equation*}
│ │ │ │ │ -84 * (\P_{n,k-1})^n \subset Ned_k \subset (\P_{n,k})^n.
│ │ │ │ │ -85 * \end{equation*}
│ │ │ │ │ -86 *
│ │ │ │ │ -87 * We construct $(\P_{n,k})^n$ and and only use the monomials contained in
│ │ │ │ │ -$Ned$.
│ │ │ │ │ -88 *
│ │ │ │ │ -89 */
│ │ │ │ │ -90 if( (_d_i_m!=2 && _d_i_m!=3) || !_g_e_o_m_e_t_r_y.isSimplex())
│ │ │ │ │ -91 DUNE_THROW(Dune::NotImplemented,"High order nedelec elements are only
│ │ │ │ │ -supported by simplices in 2d and 3d");
│ │ │ │ │ -92
│ │ │ │ │ -93 _M_I_B_a_s_i_s basis(order+1);
│ │ │ │ │ -94 FieldVector< MI, dim > x;
│ │ │ │ │ -95 /*
│ │ │ │ │ -96 * Init MultiIndices
│ │ │ │ │ -97 * x[0]=(1,0,0) x
│ │ │ │ │ -98 * x[1]=(0,1,0) y
│ │ │ │ │ -99 * x[2]=(0,0,1) z
│ │ │ │ │ -100 */
│ │ │ │ │ -101 for( unsigned int i = 0; i < _d_i_m; ++i )
│ │ │ │ │ -102 x[i].set(i,1);
│ │ │ │ │ -103 std::vector< MI > val( basis._s_i_z_e() );
│ │ │ │ │ -104
│ │ │ │ │ -105 // val now contains all monomials in $n$ dimensions with degree $\leq
│ │ │ │ │ -order+1$
│ │ │ │ │ -106 basis._e_v_a_l_u_a_t_e( x, val );
│ │ │ │ │ -107
│ │ │ │ │ -108 _c_o_l__ = basis._s_i_z_e();
│ │ │ │ │ -109
│ │ │ │ │ -110 // get $\dim (\P_{n,order-1})$
│ │ │ │ │ -111 unsigned int notHomogen = 0;
│ │ │ │ │ -112 if (order>0)
│ │ │ │ │ -113 notHomogen = basis._s_i_z_e_s()[order-1];
│ │ │ │ │ -114
│ │ │ │ │ -115 // the number of basis functions for the set of homogeneous polynomials
│ │ │ │ │ -with degree $order$
│ │ │ │ │ -116 unsigned int homogen = basis._s_i_z_e_s()[order]-notHomogen;
│ │ │ │ │ -117
│ │ │ │ │ -118 /*
│ │ │ │ │ -119 * 2D:
│ │ │ │ │ -120 * \begin{equation*}
│ │ │ │ │ -121 * Ned_{order} = (\P_{order-1})^2 \oplus (-y,x)^T \widetilde \P_{order-1}
│ │ │ │ │ -122 * \end{equation*}
│ │ │ │ │ -123 *
│ │ │ │ │ -124 * It gets more complicated in higher dimensions.
│ │ │ │ │ -125 *
│ │ │ │ │ -126 * 3D:
│ │ │ │ │ -127 * \begin{equation*}
│ │ │ │ │ -128 * Ned_{order} = (\P_{n,order-1})^3 \oplus (z,0,-x)^T \widetilde \P_
│ │ │ │ │ -{n,order-1} \oplus (-y,x,0)^T \widetilde \P_{n,order-1} \oplus (0,-z,y)^T
│ │ │ │ │ -\widetilde \P_{n-1,order-1}
│ │ │ │ │ -129 * \end{equation*}
│ │ │ │ │ -130 *
│ │ │ │ │ -131 * Note the last term. The index $n-1$ is on purpose.
│ │ │ │ │ -132 * Else i.e. k=2
│ │ │ │ │ -133 *
│ │ │ │ │ -134 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.
│ │ │ │ │ -135 *
│ │ │ │ │ -136 */
│ │ │ │ │ -137
│ │ │ │ │ -138 /*
│ │ │ │ │ -139 * compute the number of rows for the coefficient matrix
│ │ │ │ │ -140 *
│ │ │ │ │ -141 * row_ = dim* \dim Ned_{order}
│ │ │ │ │ -142 */
│ │ │ │ │ -143 if (_d_i_m == 2)
│ │ │ │ │ -144 _r_o_w__ = (notHomogen*_d_i_m+homogen*(_d_i_m+1))*_d_i_m;
│ │ │ │ │ -145 else if (_d_i_m==3)
│ │ │ │ │ -146 {
│ │ │ │ │ -147 // get dim \P_{n-1,order-1}
│ │ │ │ │ -148 int homogenTwoVariables = 0;
│ │ │ │ │ -149 for( int w = notHomogen; w0;
│ │ │ │ │ -212 /*
│ │ │ │ │ -213 * Init 9 rows to zero.
│ │ │ │ │ -214 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets
│ │ │ │ │ -skipped ( see example for the Nedelec space in 3D )
│ │ │ │ │ -215 * In this case only 6 rows get initialised.
│ │ │ │ │ -216 */
│ │ │ │ │ -217 for (unsigned int r=0; r<_d_i_m*(_d_i_m-skipLastDim); ++r)
│ │ │ │ │ -218 {
│ │ │ │ │ -219 // init rows to zero
│ │ │ │ │ -220 _m_a_t__[_r_o_w+r] = new Field[_c_o_l__];
│ │ │ │ │ -221 for (unsigned int j=0; j<_c_o_l__; ++j)
│ │ │ │ │ -222 _m_a_t__[_r_o_w+r][j] = 0.;
│ │ │ │ │ -223 }
│ │ │ │ │ -224
│ │ │ │ │ -225 /*
│ │ │ │ │ -226 * first $dim$ rows are for (z,0,-x)
│ │ │ │ │ -227 *
│ │ │ │ │ -228 * second $dim$ rows are for (-y,x,0)
│ │ │ │ │ -229 *
│ │ │ │ │ -230 * third $dim$ rows are for (0,-z,y)
│ │ │ │ │ -231 *
│ │ │ │ │ -232 */
│ │ │ │ │ -233 for (unsigned int r=0; r<_d_i_m - skipLastDim; ++r)
│ │ │ │ │ -234 {
│ │ │ │ │ -235 int index = (r+_d_i_m-1)%_d_i_m;
│ │ │ │ │ -236 for (int w=homogen+notHomogen; w
│ │ │ │ │ -_2_6_7 void _r_o_w( const unsigned int _r_o_w, Vector &vec ) const
│ │ │ │ │ -268 {
│ │ │ │ │ -269 const unsigned int N = _c_o_l_s();
│ │ │ │ │ -270 assert( vec.size() == N );
│ │ │ │ │ -271 for (unsigned int i=0; i
│ │ │ │ │ +_2_3 class _D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +24 {
│ │ │ │ │ +25 public:
│ │ │ │ │ +_2_7 _D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(_s_i_z_e())
│ │ │ │ │ +28 {
│ │ │ │ │ +29 for (std::size_t i=0; i<_s_i_z_e(); i++)
│ │ │ │ │ +30 li[i] = _L_o_c_a_l_K_e_y(i,dim,0);
│ │ │ │ │ +31 }
│ │ │ │ │ +32
│ │ │ │ │ +_3_4 std::size_t _s_i_z_e () const
│ │ │ │ │ +35 {
│ │ │ │ │ +36 return dim+1;
│ │ │ │ │ +37 }
│ │ │ │ │ +38
│ │ │ │ │ +_4_0 const _L_o_c_a_l_K_e_y& _l_o_c_a_l_K_e_y (std::size_t i) const
│ │ │ │ │ +41 {
│ │ │ │ │ +42 return li[i];
│ │ │ │ │ +43 }
│ │ │ │ │ +44
│ │ │ │ │ +45 private:
│ │ │ │ │ +46 std::vector li;
│ │ │ │ │ +47 };
│ │ │ │ │ +48
│ │ │ │ │ +49}
│ │ │ │ │ +50
│ │ │ │ │ +51#endif
│ │ │ │ │ +_l_o_c_a_l_k_e_y_._h_h
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_f_i_e_l_d___c_a_s_t
│ │ │ │ │ -void field_cast(const F1 &f1, F2 &f2)
│ │ │ │ │ -a helper class to cast from one field to another
│ │ │ │ │ -DDeeffiinniittiioonn field.hh:159
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:64
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x
│ │ │ │ │ -NedelecVecMatrix(std::size_t order)
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:69
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_M_I
│ │ │ │ │ -MultiIndex< dim, Field > MI
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:67
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_r_o_w__
│ │ │ │ │ -unsigned int row_
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:275
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_c_o_l_s
│ │ │ │ │ -unsigned int cols() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:258
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_~_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x
│ │ │ │ │ -~NedelecVecMatrix()
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:250
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_M_I_B_a_s_i_s
│ │ │ │ │ -MonomialBasis< geometryId, MI > MIBasis
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:68
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_c_o_l__
│ │ │ │ │ -unsigned int col_
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:275
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_d_i_m
│ │ │ │ │ -static const unsigned int dim
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:66
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_r_o_w
│ │ │ │ │ -void row(const unsigned int row, Vector &vec) const
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:267
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_g_e_o_m_e_t_r_y
│ │ │ │ │ -static constexpr GeometryType geometry
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:65
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_r_o_w_s
│ │ │ │ │ -unsigned int rows() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:262
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_V_e_c_M_a_t_r_i_x_:_:_m_a_t__
│ │ │ │ │ -Field ** mat_
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:276
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:25
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_r_e_l_e_a_s_e
│ │ │ │ │ -static void release(Object *object)
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:59
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_M_B_a_s_i_s
│ │ │ │ │ -MBasisFactory::Object MBasis
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:27
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_c_r_e_a_t_e
│ │ │ │ │ -static Object * create(Key order)
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:41
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_B_a_s_i_s
│ │ │ │ │ -PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:29
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_O_b_j_e_c_t
│ │ │ │ │ -const Basis Object
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:31
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_E_v_a_l_M_B_a_s_i_s
│ │ │ │ │ -StandardEvaluator< MBasis > EvalMBasis
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:28
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_M_B_a_s_i_s_F_a_c_t_o_r_y
│ │ │ │ │ -MonomialBasisProvider< dim, Field > MBasisFactory
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:26
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_K_e_y
│ │ │ │ │ -std::size_t Key
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:32
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_E_v_a_l_u_a_t_i_o_n_B_a_s_i_s_F_a_c_t_o_r_y
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:36
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_P_r_e_B_a_s_i_s_F_a_c_t_o_r_y_:_:_E_v_a_l_u_a_t_i_o_n_B_a_s_i_s_F_a_c_t_o_r_y_:_:_T_y_p_e
│ │ │ │ │ -MonomialBasisProvider< dd, FF > Type
│ │ │ │ │ -DDeeffiinniittiioonn nedelecsimplexprebasis.hh:37
│ │ │ │ │ -_D_u_n_e_:_:_S_t_a_n_d_a_r_d_E_v_a_l_u_a_t_o_r
│ │ │ │ │ -DDeeffiinniittiioonn basisevaluator.hh:131
│ │ │ │ │ -_D_u_n_e_:_:_M_o_n_o_m_i_a_l_B_a_s_i_s
│ │ │ │ │ -DDeeffiinniittiioonn monomialbasis.hh:440
│ │ │ │ │ -_D_u_n_e_:_:_M_o_n_o_m_i_a_l_B_a_s_i_s_:_:_s_i_z_e
│ │ │ │ │ -unsigned int size() const
│ │ │ │ │ -DDeeffiinniittiioonn monomialbasis.hh:476
│ │ │ │ │ -_D_u_n_e_:_:_M_o_n_o_m_i_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e
│ │ │ │ │ -void evaluate(const unsigned int deriv, const DomainVector &x, Field *const
│ │ │ │ │ -values) const
│ │ │ │ │ -DDeeffiinniittiioonn monomialbasis.hh:498
│ │ │ │ │ -_D_u_n_e_:_:_M_o_n_o_m_i_a_l_B_a_s_i_s_:_:_s_i_z_e_s
│ │ │ │ │ -const unsigned int * sizes(unsigned int order) const
│ │ │ │ │ -DDeeffiinniittiioonn monomialbasis.hh:465
│ │ │ │ │ -_D_u_n_e_:_:_M_o_n_o_m_i_a_l_B_a_s_i_s_P_r_o_v_i_d_e_r
│ │ │ │ │ -DDeeffiinniittiioonn monomialbasis.hh:780
│ │ │ │ │ -_D_u_n_e_:_:_M_u_l_t_i_I_n_d_e_x
│ │ │ │ │ -DDeeffiinniittiioonn multiindex.hh:38
│ │ │ │ │ -_D_u_n_e_:_:_M_u_l_t_i_I_n_d_e_x_:_:_z
│ │ │ │ │ -int z(int i) const
│ │ │ │ │ -DDeeffiinniittiioonn multiindex.hh:92
│ │ │ │ │ -_D_u_n_e_:_:_P_o_l_y_n_o_m_i_a_l_B_a_s_i_s_W_i_t_h_M_a_t_r_i_x
│ │ │ │ │ -DDeeffiinniittiioonn polynomialbasis.hh:348
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_K_e_y
│ │ │ │ │ +Describe position of one degree of freedom.
│ │ │ │ │ +DDeeffiinniittiioonn localkey.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +Local coefficients for dual simplex P1 elements.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localcoefficients.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +DualP1LocalCoefficients()
│ │ │ │ │ +Standard constructor.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localcoefficients.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y
│ │ │ │ │ +const LocalKey & localKey(std::size_t i) const
│ │ │ │ │ +get i'th index
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localcoefficients.hh:40
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e
│ │ │ │ │ +std::size_t size() const
│ │ │ │ │ +number of coefficients
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localcoefficients.hh:34
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: nedelec1stkindcube.hh File Reference
│ │ │ │ +dune-localfunctions: dualp1localbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,40 +65,35 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
#include <numeric>
│ │ │ │ -
#include <dune/common/fmatrix.hh>
│ │ │ │
#include <dune/common/fvector.hh>
│ │ │ │ -
#include <dune/common/math.hh>
│ │ │ │ -
#include <dune/geometry/referenceelements.hh>
│ │ │ │ -
#include <dune/geometry/type.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localfiniteelementtraits.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ +
#include <dune/common/fmatrix.hh>
│ │ │ │ +
#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── encoding
│ │ │ │ │ @@ -1 +1 @@
│ │ │ │ │ -utf-8
│ │ │ │ │ +us-ascii
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,28 +1,24 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _n_e_d_e_l_e_c
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ + * _d_u_a_l_p_1
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -nedelec1stkindcube.hh File Reference
│ │ │ │ │ +dualp1localbasis.hh File Reference
│ │ │ │ │ #include
│ │ │ │ │ -#include
│ │ │ │ │ #include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ +#include
│ │ │ │ │ #include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ -class _D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _d_i_m_,_ _k_ _>
│ │ │ │ │ - Nédélec elements of the first kind for cube elements. _M_o_r_e_._._.
│ │ │ │ │ +class _D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_,_ _d_i_m_,_ _f_a_c_e_D_u_a_l_T_ _>
│ │ │ │ │ + Dual Lagrange shape functions on the simplex. _M_o_r_e_._._.
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: nedelec1stkindcube.hh Source File
│ │ │ │ +dune-localfunctions: dualp1localbasis.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,518 +70,147 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
│ │ │ │ +
5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_DUAL_P1_LOCALBASIS_HH
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
10#include <dune/common/fmatrix.hh>
│ │ │ │ -
11#include <dune/common/fvector.hh>
│ │ │ │ -
12#include <dune/common/math.hh>
│ │ │ │ +
10#include <dune/common/fvector.hh>
│ │ │ │ +
11#include <dune/common/fmatrix.hh>
│ │ │ │ +
│ │ │ │
│ │ │ │ -
14#include <dune/geometry/referenceelements.hh>
│ │ │ │ -
15#include <dune/geometry/type.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
37 template<
class D,
class R,
int dim,
int k>
│ │ │ │ -
38 class Nedelec1stKindCubeLocalBasis
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
33 template<
class D,
class R,
int dim,
bool faceDualT=false>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
44 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
│ │ │ │ -
45 R,dim,FieldVector<R,dim>,
│ │ │ │ -
46 FieldMatrix<R,dim,dim> >;
│ │ │ │ -
│ │ │ │ -
54 Nedelec1stKindCubeLocalBasis()
│ │ │ │ -
│ │ │ │ -
56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
61 Nedelec1stKindCubeLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
│ │ │ │ -
62 : Nedelec1stKindCubeLocalBasis()
│ │ │ │ -
│ │ │ │ -
64 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
│ │ │ │ -
65 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
69 static constexpr unsigned int size()
│ │ │ │ -
│ │ │ │ -
71 static_assert(dim==2 || dim==3,
"Nedelec shape functions are implemented only for 2d and 3d cubes.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
75 return 3*k * (k+1) * (k+1);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
84 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
86 static_assert(k==1,
"Evaluating Nédélec shape functions is implemented only for first order.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
103 out[0] = { 0, D(1) - in[0]};
│ │ │ │ -
104 out[1] = { 0, in[0]};
│ │ │ │ -
105 out[2] = { D(1) - in[1], 0};
│ │ │ │ -
106 out[3] = { in[1], 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
109 if constexpr (dim==3)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
128 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
131 out[0][2] = { 1 - in[0] - in[1] + in[0]*in[1]};
│ │ │ │ -
132 out[1][2] = { in[0] - in[0]*in[1]};
│ │ │ │ -
133 out[2][2] = { in[1] - in[0]*in[1]};
│ │ │ │ -
134 out[3][2] = { in[0]*in[1]};
│ │ │ │ -
│ │ │ │ -
136 out[4][1] = { 1 - in[0] - in[2] + in[0]*in[2]};
│ │ │ │ -
137 out[5][1] = { in[0] - in[0]*in[2]};
│ │ │ │ -
138 out[8][1] = { in[2] - in[0]*in[2]};
│ │ │ │ -
139 out[9][1] = { in[0]*in[2]};
│ │ │ │ -
│ │ │ │ -
141 out[6][0] = { 1 - in[1] - in[2] + in[1]*in[2]};
│ │ │ │ -
142 out[7][0] = { in[1] - in[1]*in[2]};
│ │ │ │ -
143 out[10][0] = { in[2] - in[1]*in[2]};
│ │ │ │ -
144 out[11][0] = { in[1]*in[2]};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
147 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
148 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
157 std::vector<typename Traits::JacobianType>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
162 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
163 for (std::size_t j=0; j<dim; j++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
166 out[0][1] = { -1, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
169 out[2][0] = { 0, -1};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
174 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
175 for(std::size_t j=0;j<dim; j++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
179 out[0][2] = {-1 +in[1], -1 + in[0], 0};
│ │ │ │ -
180 out[1][2] = { 1 -in[1], - in[0], 0};
│ │ │ │ -
181 out[2][2] = { -in[1], 1 - in[0], 0};
│ │ │ │ -
182 out[3][2] = { in[1], in[0], 0};
│ │ │ │ -
│ │ │ │ -
184 out[4][1] = {-1 +in[2], 0, -1 + in[0]};
│ │ │ │ -
185 out[5][1] = { 1 -in[2], 0, - in[0]};
│ │ │ │ -
186 out[8][1] = { -in[2], 0, 1 - in[0]};
│ │ │ │ -
187 out[9][1] = { in[2], 0, in[0]};
│ │ │ │ -
│ │ │ │ -
189 out[6][0] = { 0, -1 + in[2], -1 + in[1]};
│ │ │ │ -
190 out[7][0] = { 0, 1 - in[2], - in[1]};
│ │ │ │ -
191 out[10][0] = { 0, - in[2], 1 - in[1]};
│ │ │ │ -
192 out[11][0] = { 0, in[2], in[1]};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
196 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
197 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
207 void partial(
const std::array<unsigned int, dim>& order,
│ │ │ │ -
│ │ │ │ -
209 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
212 if (totalOrder == 0) {
│ │ │ │ -
213 evaluateFunction(in, out);
│ │ │ │ -
214 }
else if (totalOrder == 1) {
│ │ │ │ -
215 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
241 out[0] = { 0, 0, -1 +in[1]};
│ │ │ │ -
242 out[1] = { 0, 0, 1 -in[1]};
│ │ │ │ -
243 out[2] = { 0, 0, -in[1]};
│ │ │ │ -
244 out[3] = { 0, 0, in[1]};
│ │ │ │ -
│ │ │ │ -
246 out[4] = { 0, -1 +in[2], 0};
│ │ │ │ -
247 out[5] = { 0, 1 -in[2], 0};
│ │ │ │ -
248 out[8] = { 0, -in[2], 0};
│ │ │ │ -
249 out[9] = { 0, in[2], 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
258 out[0] = { 0, 0, -1 + in[0]};
│ │ │ │ -
259 out[1] = { 0, 0, - in[0]};
│ │ │ │ -
260 out[2] = { 0, 0, 1 - in[0]};
│ │ │ │ -
261 out[3] = { 0, 0, in[0]};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
268 out[6] = { -1 + in[2], 0, 0};
│ │ │ │ -
269 out[7] = { 1 - in[2], 0, 0};
│ │ │ │ -
270 out[10] = { - in[2], 0, 0};
│ │ │ │ -
271 out[11] = { in[2], 0, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
280 out[4] = { 0, -1 + in[0], 0};
│ │ │ │ -
281 out[5] = { 0, - in[0], 0};
│ │ │ │ -
282 out[8] = { 0, 1 - in[0], 0};
│ │ │ │ -
283 out[9] = { 0, in[0], 0};
│ │ │ │ -
│ │ │ │ -
285 out[6] = { -1 + in[1], 0, 0};
│ │ │ │ -
286 out[7] = { - in[1], 0, 0};
│ │ │ │ -
287 out[10] = { 1 - in[1], 0, 0};
│ │ │ │ -
288 out[11] = { in[1], 0, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
293 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
294 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
296 }
else if (totalOrder == 2) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
300 for (std::size_t i = 0; i < size(); ++i)
│ │ │ │ -
301 for (std::size_t j = 0; j < dim; ++j)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
306 for(
size_t i=0; i<out.size(); i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
310 if( order[0] == 1 and order[1]==1)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
313 out[1] = { 0, 0, -1};
│ │ │ │ -
314 out[2] = { 0, 0, -1};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
319 if( order[0] == 1 and order[2]==1)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
322 out[5] = { 0, -1, 0};
│ │ │ │ -
323 out[8] = { 0, -1, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
328 if( order[1] == 1 and order[2]==1)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
331 out[7] = { -1, 0, 0};
│ │ │ │ -
332 out[10] = { -1, 0, 0};
│ │ │ │ -
333 out[11] = { 1, 0, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
336 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
337 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
343 for (std::size_t i = 0; i < size(); ++i)
│ │ │ │ -
344 for (std::size_t j = 0; j < dim; ++j)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
351 unsigned int order()
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
362 std::array<R,numberOfEdges> edgeOrientation_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
370 template <
int dim,
int k>
│ │ │ │ -
371 class Nedelec1stKindCubeLocalCoefficients
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
375 Nedelec1stKindCubeLocalCoefficients ()
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
378 static_assert(k==1,
"Only first-order Nédélec local coefficients are implemented.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
381 for (std::size_t i=0; i<size(); i++)
│ │ │ │ -
382 localKey_[i] = LocalKey(i,dim-1,0);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
386 std::size_t size()
const
│ │ │ │ -
│ │ │ │ -
388 static_assert(dim==2 || dim==3,
"Nédélec shape functions are implemented only for 2d and 3d cubes.");
│ │ │ │ -
389 return (dim==2) ? 2*k * (k+1)
│ │ │ │ -
390 : 3*k * (k+1) * (k+1);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
395 const LocalKey& localKey (std::size_t i)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
401 std::vector<LocalKey> localKey_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
409 class Nedelec1stKindCubeLocalInterpolation
│ │ │ │ -
│ │ │ │ -
411 static constexpr auto dim = LB::Traits::dimDomain;
│ │ │ │ -
412 static constexpr auto size = LB::size();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
420 Nedelec1stKindCubeLocalInterpolation (std::bitset<numberOfEdges> s = 0)
│ │ │ │ -
│ │ │ │ -
422 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::cube(dim));
│ │ │ │ -
│ │ │ │ -
424 for (std::size_t i=0; i<numberOfEdges; i++)
│ │ │ │ -
425 m_[i] = refElement.position(i,dim-1);
│ │ │ │ -
│ │ │ │ -
427 for (std::size_t i=0; i<numberOfEdges; i++)
│ │ │ │ -
│ │ │ │ -
429 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
│ │ │ │ -
430 auto v0 = *vertexIterator;
│ │ │ │ -
431 auto v1 = *(++vertexIterator);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
│ │ │ │ -
438 edge_[i] *= (s[i]) ? -1.0 : 1.0;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
447 template<
typename F,
typename C>
│ │ │ │ -
448 void interpolate (
const F& f, std::vector<C>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
452 for (std::size_t i=0; i<size; i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
456 for (
int j=0; j<dim; j++)
│ │ │ │ -
457 out[i] += y[j]*edge_[i][j];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
463 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
│ │ │ │ -
│ │ │ │ -
465 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
494 template<
class D,
class R,
int dim,
int k>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
499 Impl::Nedelec1stKindCubeLocalCoefficients<dim,k>,
│ │ │ │ -
500 Impl::Nedelec1stKindCubeLocalInterpolation<Impl::Nedelec1stKindCubeLocalBasis<D,R,dim,k> > >;
│ │ │ │ -
│ │ │ │ -
502 static_assert(dim==2 || dim==3,
"Nedelec elements are only implemented for 2d and 3d elements.");
│ │ │ │ -
503 static_assert(k==1,
"Nedelec elements of the first kind are currently only implemented for order k==1.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
526 return coefficients_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
531 return interpolation_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
534 static constexpr unsigned int size ()
│ │ │ │ -
│ │ │ │ -
536 return Traits::LocalBasisType::size();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
539 static constexpr GeometryType
type ()
│ │ │ │ -
│ │ │ │ -
541 return GeometryTypes::cube(dim);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
51 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
54 std::vector<typename Traits::RangeType> p1Values(
size());
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
58 for (
int i=0; i<dim; i++) {
│ │ │ │ +
│ │ │ │ +
60 p1Values[i+1] = in[i];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
66 for (
int i=0; i<=dim; i++) {
│ │ │ │ +
67 out[i] = (dim+!
faceDual)*p1Values[i];
│ │ │ │ +
68 for (
int j=0; j<i; j++)
│ │ │ │ +
69 out[i] -= p1Values[j];
│ │ │ │ +
│ │ │ │ +
71 for (
int j=i+1; j<=dim; j++)
│ │ │ │ +
72 out[i] -= p1Values[j];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
79 std::vector<typename Traits::JacobianType>& out)
const
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
82 std::vector<typename Traits::JacobianType> p1Jacs(
size());
│ │ │ │ +
│ │ │ │ +
84 for (
int i=0; i<dim; i++)
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
87 for (
int i=0; i<dim; i++)
│ │ │ │ +
88 for (
int j=0; j<dim; j++)
│ │ │ │ +
89 p1Jacs[i+1][0][j] = (i==j);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
94 for (
size_t i=0; i<=dim; i++) {
│ │ │ │ +
│ │ │ │ +
96 out[i][0].axpy(dim+!
faceDual,p1Jacs[i][0]);
│ │ │ │ +
│ │ │ │ +
98 for (
size_t j=0; j<i; j++)
│ │ │ │ +
99 out[i][0] -= p1Jacs[j][0];
│ │ │ │ +
│ │ │ │ +
101 for (
int j=i+1; j<=dim; j++)
│ │ │ │ +
102 out[i][0] -= p1Jacs[j][0];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
109 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ +
│ │ │ │ +
111 auto totalOrder = std::accumulate(
order.begin(),
order.end(), 0);
│ │ │ │ +
112 if (totalOrder == 0) {
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
115 DUNE_THROW(NotImplemented,
"Desired derivative order is not implemented");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ -
Nédélec elements of the first kind for cube elements.
Definition nedelec1stkindcube.hh:496
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition nedelec1stkindcube.hh:529
│ │ │ │ -
static constexpr unsigned int size()
Definition nedelec1stkindcube.hh:534
│ │ │ │ -
Nedelec1stKindCubeLocalFiniteElement()=default
Default constructor.
│ │ │ │ -
static constexpr GeometryType type()
Definition nedelec1stkindcube.hh:539
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition nedelec1stkindcube.hh:524
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition nedelec1stkindcube.hh:519
│ │ │ │ -
Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)
Constructor with explicitly given edge orientations.
Definition nedelec1stkindcube.hh:514
│ │ │ │ -
│ │ │ │ +
Dual Lagrange shape functions on the simplex.
Definition dualp1localbasis.hh:35
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition dualp1localbasis.hh:120
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition dualp1localbasis.hh:50
│ │ │ │ +
static const bool faceDual
Determines if the basis is only biorthogonal on adjacent faces.
Definition dualp1localbasis.hh:38
│ │ │ │ +
void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition dualp1localbasis.hh:107
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition dualp1localbasis.hh:44
│ │ │ │ +
LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
export type traits for function signature
Definition dualp1localbasis.hh:41
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition dualp1localbasis.hh:78
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,540 +1,163 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _n_e_d_e_l_e_c
│ │ │ │ │ -nedelec1stkindcube.hh
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ + * _d_u_a_l_p_1
│ │ │ │ │ +dualp1localbasis.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
│ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
│ │ │ │ │ +5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH
│ │ │ │ │ +6#define DUNE_DUAL_P1_LOCALBASIS_HH
│ │ │ │ │ 7
│ │ │ │ │ 8#include
│ │ │ │ │ 9
│ │ │ │ │ -10#include
│ │ │ │ │ -11#include
│ │ │ │ │ -12#include
│ │ │ │ │ +10#include
│ │ │ │ │ +11#include
│ │ │ │ │ +12#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ 13
│ │ │ │ │ -14#include
│ │ │ │ │ -15#include
│ │ │ │ │ -16
│ │ │ │ │ -17#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ -18#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ -19#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ -20
│ │ │ │ │ -21namespace _D_u_n_e
│ │ │ │ │ -22{
│ │ │ │ │ -23namespace Impl
│ │ │ │ │ -24{
│ │ │ │ │ -37 template
│ │ │ │ │ -38 class Nedelec1stKindCubeLocalBasis
│ │ │ │ │ -39 {
│ │ │ │ │ -40 // Number of edges of the reference cube
│ │ │ │ │ -41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
│ │ │ │ │ +14namespace _D_u_n_e
│ │ │ │ │ +15{
│ │ │ │ │ +33 template
│ │ │ │ │ +_3_4 class _D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +35 {
│ │ │ │ │ +36 public:
│ │ │ │ │ +_3_8 static const bool _f_a_c_e_D_u_a_l = faceDualT;
│ │ │ │ │ +40 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_d_i_m_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_d_i_m_>,R,1,Dune::
│ │ │ │ │ +FieldVector,
│ │ │ │ │ +_4_1 Dune::FieldMatrix > _T_r_a_i_t_s;
│ │ │ │ │ 42
│ │ │ │ │ -43 public:
│ │ │ │ │ -44 using Traits = LocalBasisTraits,
│ │ │ │ │ -45 R,dim,FieldVector,
│ │ │ │ │ -46 FieldMatrix >;
│ │ │ │ │ -47
│ │ │ │ │ -54 Nedelec1stKindCubeLocalBasis()
│ │ │ │ │ -55 {
│ │ │ │ │ -56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
│ │ │ │ │ -57 }
│ │ │ │ │ -58
│ │ │ │ │ -61 Nedelec1stKindCubeLocalBasis(std::bitset edgeOrientation)
│ │ │ │ │ -62 : Nedelec1stKindCubeLocalBasis()
│ │ │ │ │ -63 {
│ │ │ │ │ -64 for (std::size_t i=0; i& out) const
│ │ │ │ │ -85 {
│ │ │ │ │ -86 static_assert(k==1, "Evaluating Nédélec shape functions is implemented
│ │ │ │ │ -only for first order.");
│ │ │ │ │ -87 out.resize(size());
│ │ │ │ │ -88
│ │ │ │ │ -89 if (dim==2)
│ │ │ │ │ -90 {
│ │ │ │ │ -91 // First-order Nédélec shape functions on a square are of the form
│ │ │ │ │ -92 //
│ │ │ │ │ -93 // (a, b)^T + (c y, d x)^T, a, b, c, d \in R
│ │ │ │ │ -94 //
│ │ │ │ │ -95 // The following coefficients create the four basis vectors
│ │ │ │ │ -96 // that are dual to the edge degrees of freedom:
│ │ │ │ │ -97 //
│ │ │ │ │ -98 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1
│ │ │ │ │ -99 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1
│ │ │ │ │ -100 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1
│ │ │ │ │ -101 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1
│ │ │ │ │ -102
│ │ │ │ │ -103 out[0] = { 0, D(1) - in[0]};
│ │ │ │ │ -104 out[1] = { 0, in[0]};
│ │ │ │ │ -105 out[2] = { D(1) - in[1], 0};
│ │ │ │ │ -106 out[3] = { in[1], 0};
│ │ │ │ │ -107 }
│ │ │ │ │ -108
│ │ │ │ │ -109 if constexpr (dim==3)
│ │ │ │ │ +_4_4 unsigned int _s_i_z_e () const
│ │ │ │ │ +45 {
│ │ │ │ │ +46 return dim+1;
│ │ │ │ │ +47 }
│ │ │ │ │ +48
│ │ │ │ │ +_5_0 inline void _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n (const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in,
│ │ │ │ │ +51 std::vector& out) const
│ │ │ │ │ +52 {
│ │ │ │ │ +53 // evaluate P1 basis functions
│ │ │ │ │ +54 std::vector p1Values(_s_i_z_e());
│ │ │ │ │ +55
│ │ │ │ │ +56 p1Values[0] = 1.0;
│ │ │ │ │ +57
│ │ │ │ │ +58 for (int i=0; i& out) const
│ │ │ │ │ +80 {
│ │ │ │ │ +81 // evaluate P1 jacobians
│ │ │ │ │ +82 std::vector p1Jacs(_s_i_z_e());
│ │ │ │ │ +83
│ │ │ │ │ +84 for (int i=0; i& _o_r_d_e_r,
│ │ │ │ │ +108 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position
│ │ │ │ │ +109 std::vector& out) const // return value
│ │ │ │ │ 110 {
│ │ │ │ │ -111 // First-order Nédélec shape functions on a cube are of the form
│ │ │ │ │ -112 //
│ │ │ │ │ -113 // (e1 yz)
│ │ │ │ │ -114 // a + b x + c y + d z + (e2 xz) , a, b, c, d \in R^3 and b[0]=c[1]=d[2]=0
│ │ │ │ │ -115 // (e3 xy)
│ │ │ │ │ -116 //
│ │ │ │ │ -117 // The following coefficients create the twelve basis vectors
│ │ │ │ │ -118 // that are dual to the edge degrees of freedom:
│ │ │ │ │ -119 //
│ │ │ │ │ -120 // a[0] = { 0, 0, 1} b[0] = { 0, 0, -1} c[0] = { 0, 0, -1} d[0] = { 0, 0,
│ │ │ │ │ -0} e[0] = { 0, 0, 1}
│ │ │ │ │ -121 // a[1] = { 0, 0, 0} b[1] = { 0, 0, 1} c[1] = { 0, 0, 0} d[1] = { 0, 0, 0}
│ │ │ │ │ -e[1] = { 0, 0, -1}
│ │ │ │ │ -122 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 0} c[2] = { 0, 0, 1} d[2] = { 0, 0, 0}
│ │ │ │ │ -e[2] = { 0, 0, -1}
│ │ │ │ │ -123 // a[3] = { 0, 0, 0} b[3] = { 0, 0, 0} c[3] = { 0, 0, 0} d[3] = { 0, 0, 0}
│ │ │ │ │ -e[3] = { 0, 0, 1}
│ │ │ │ │ -124 //
│ │ │ │ │ -125 // The following implementation uses these values, and simply
│ │ │ │ │ -126 // skips all the zeros.
│ │ │ │ │ -127
│ │ │ │ │ -128 for (std::size_t i=0; i& out) const
│ │ │ │ │ -158 {
│ │ │ │ │ -159 out.resize(size());
│ │ │ │ │ -160 if (dim==2)
│ │ │ │ │ -161 {
│ │ │ │ │ -162 for (std::size_t i=0; i& order,
│ │ │ │ │ -208 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in,
│ │ │ │ │ -209 std::vector& out) const
│ │ │ │ │ -210 {
│ │ │ │ │ -211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ │ -212 if (totalOrder == 0) {
│ │ │ │ │ -213 evaluateFunction(in, out);
│ │ │ │ │ -214 } else if (totalOrder == 1) {
│ │ │ │ │ -215 auto const direction = std::distance(order.begin(), std::find(order.begin
│ │ │ │ │ -(), order.end(), 1));
│ │ │ │ │ -216 out.resize(size());
│ │ │ │ │ -217
│ │ │ │ │ -218 if (dim==2)
│ │ │ │ │ -219 {
│ │ │ │ │ -220 if (direction==0)
│ │ │ │ │ -221 {
│ │ │ │ │ -222 out[0] = { 0, -1};
│ │ │ │ │ -223 out[1] = { 0, 1};
│ │ │ │ │ -224 out[2] = { 0, 0};
│ │ │ │ │ -225 out[3] = { 0, 0};
│ │ │ │ │ -226 }
│ │ │ │ │ -227 else
│ │ │ │ │ -228 {
│ │ │ │ │ -229 out[0] = { 0, 0};
│ │ │ │ │ -230 out[1] = { 0, 0};
│ │ │ │ │ -231 out[2] = { -1, 0};
│ │ │ │ │ -232 out[3] = { 1, 0};
│ │ │ │ │ -233 }
│ │ │ │ │ -234 }
│ │ │ │ │ -235
│ │ │ │ │ -236 if (dim==3)
│ │ │ │ │ -237 {
│ │ │ │ │ -238 switch (direction)
│ │ │ │ │ -239 {
│ │ │ │ │ -240 case 0:
│ │ │ │ │ -241 out[0] = { 0, 0, -1 +in[1]};
│ │ │ │ │ -242 out[1] = { 0, 0, 1 -in[1]};
│ │ │ │ │ -243 out[2] = { 0, 0, -in[1]};
│ │ │ │ │ -244 out[3] = { 0, 0, in[1]};
│ │ │ │ │ -245
│ │ │ │ │ -246 out[4] = { 0, -1 +in[2], 0};
│ │ │ │ │ -247 out[5] = { 0, 1 -in[2], 0};
│ │ │ │ │ -248 out[8] = { 0, -in[2], 0};
│ │ │ │ │ -249 out[9] = { 0, in[2], 0};
│ │ │ │ │ -250
│ │ │ │ │ -251 out[6] = {0,0,0};
│ │ │ │ │ -252 out[7] = {0,0,0};
│ │ │ │ │ -253 out[10] = {0,0,0};
│ │ │ │ │ -254 out[11] = {0,0,0};
│ │ │ │ │ -255 break;
│ │ │ │ │ -256
│ │ │ │ │ -257 case 1:
│ │ │ │ │ -258 out[0] = { 0, 0, -1 + in[0]};
│ │ │ │ │ -259 out[1] = { 0, 0, - in[0]};
│ │ │ │ │ -260 out[2] = { 0, 0, 1 - in[0]};
│ │ │ │ │ -261 out[3] = { 0, 0, in[0]};
│ │ │ │ │ -262
│ │ │ │ │ -263 out[4] = {0,0,0};
│ │ │ │ │ -264 out[5] = {0,0,0};
│ │ │ │ │ -265 out[8] = {0,0,0};
│ │ │ │ │ -266 out[9] = {0,0,0};
│ │ │ │ │ -267
│ │ │ │ │ -268 out[6] = { -1 + in[2], 0, 0};
│ │ │ │ │ -269 out[7] = { 1 - in[2], 0, 0};
│ │ │ │ │ -270 out[10] = { - in[2], 0, 0};
│ │ │ │ │ -271 out[11] = { in[2], 0, 0};
│ │ │ │ │ -272 break;
│ │ │ │ │ -273
│ │ │ │ │ -274 case 2:
│ │ │ │ │ -275 out[0] = {0,0,0};
│ │ │ │ │ -276 out[1] = {0,0,0};
│ │ │ │ │ -277 out[2] = {0,0,0};
│ │ │ │ │ -278 out[3] = {0,0,0};
│ │ │ │ │ -279
│ │ │ │ │ -280 out[4] = { 0, -1 + in[0], 0};
│ │ │ │ │ -281 out[5] = { 0, - in[0], 0};
│ │ │ │ │ -282 out[8] = { 0, 1 - in[0], 0};
│ │ │ │ │ -283 out[9] = { 0, in[0], 0};
│ │ │ │ │ -284
│ │ │ │ │ -285 out[6] = { -1 + in[1], 0, 0};
│ │ │ │ │ -286 out[7] = { - in[1], 0, 0};
│ │ │ │ │ -287 out[10] = { 1 - in[1], 0, 0};
│ │ │ │ │ -288 out[11] = { in[1], 0, 0};
│ │ │ │ │ -289 break;
│ │ │ │ │ -290 }
│ │ │ │ │ -291 }
│ │ │ │ │ -292
│ │ │ │ │ -293 for (std::size_t i=0; i edgeOrientation_;
│ │ │ │ │ -363 };
│ │ │ │ │ -364
│ │ │ │ │ -365
│ │ │ │ │ -370 template
│ │ │ │ │ -371 class Nedelec1stKindCubeLocalCoefficients
│ │ │ │ │ -372 {
│ │ │ │ │ -373 public:
│ │ │ │ │ -375 Nedelec1stKindCubeLocalCoefficients ()
│ │ │ │ │ -376 : localKey_(size())
│ │ │ │ │ -377 {
│ │ │ │ │ -378 static_assert(k==1, "Only first-order Nédélec local coefficients are
│ │ │ │ │ -implemented.");
│ │ │ │ │ -379 // Assign all degrees of freedom to edges
│ │ │ │ │ -380 // TODO: This is correct only for first-order Nédélec elements
│ │ │ │ │ -381 for (std::size_t i=0; i localKey_;
│ │ │ │ │ -402 };
│ │ │ │ │ -403
│ │ │ │ │ -408 template
│ │ │ │ │ -409 class Nedelec1stKindCubeLocalInterpolation
│ │ │ │ │ -410 {
│ │ │ │ │ -411 static constexpr auto dim = LB::Traits::dimDomain;
│ │ │ │ │ -412 static constexpr auto size = LB::size();
│ │ │ │ │ -413
│ │ │ │ │ -414 // Number of edges of the reference cube
│ │ │ │ │ -415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
│ │ │ │ │ -416
│ │ │ │ │ -417 public:
│ │ │ │ │ -418
│ │ │ │ │ -420 Nedelec1stKindCubeLocalInterpolation (std::bitset s = 0)
│ │ │ │ │ -421 {
│ │ │ │ │ -422 auto refElement = Dune::referenceElement(GeometryTypes::cube
│ │ │ │ │ -(dim));
│ │ │ │ │ -423
│ │ │ │ │ -424 for (std::size_t i=0; iv1)
│ │ │ │ │ -436 std::swap(v0,v1);
│ │ │ │ │ -437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
│ │ │ │ │ -438 edge_[i] *= (s[i]) ? -1.0 : 1.0;
│ │ │ │ │ -439 }
│ │ │ │ │ -440 }
│ │ │ │ │ -441
│ │ │ │ │ -447 template
│ │ │ │ │ -448 void interpolate (const F& f, std::vector& out) const
│ │ │ │ │ -449 {
│ │ │ │ │ -450 out.resize(size);
│ │ │ │ │ -451
│ │ │ │ │ -452 for (std::size_t i=0; i m_;
│ │ │ │ │ -464 // Edges of the reference cube
│ │ │ │ │ -465 std::array edge_;
│ │ │ │ │ -466 };
│ │ │ │ │ -467
│ │ │ │ │ -468}
│ │ │ │ │ -469
│ │ │ │ │ -470
│ │ │ │ │ -494 template
│ │ │ │ │ -_4_9_5 class _N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -496 {
│ │ │ │ │ -497 public:
│ │ │ │ │ -_4_9_8 using _T_r_a_i_t_s = _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_<_I_m_p_l_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_k_>,
│ │ │ │ │ -499 Impl::Nedelec1stKindCubeLocalCoefficients,
│ │ │ │ │ -500 Impl::Nedelec1stKindCubeLocalInterpolation > >;
│ │ │ │ │ -501
│ │ │ │ │ -502 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for
│ │ │ │ │ -2d and 3d elements.");
│ │ │ │ │ -503 static_assert(k==1, "Nedelec elements of the first kind are currently only
│ │ │ │ │ -implemented for order k==1.");
│ │ │ │ │ -504
│ │ │ │ │ -_5_0_7 _N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() = default;
│ │ │ │ │ -508
│ │ │ │ │ -_5_1_4 _N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (std::bitset s) :
│ │ │ │ │ -515 basis_(s),
│ │ │ │ │ -516 interpolation_(s)
│ │ │ │ │ -517 {}
│ │ │ │ │ -518
│ │ │ │ │ -_5_1_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const
│ │ │ │ │ -520 {
│ │ │ │ │ -521 return basis_;
│ │ │ │ │ -522 }
│ │ │ │ │ -523
│ │ │ │ │ -_5_2_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const
│ │ │ │ │ -525 {
│ │ │ │ │ -526 return coefficients_;
│ │ │ │ │ -527 }
│ │ │ │ │ -528
│ │ │ │ │ -_5_2_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const
│ │ │ │ │ -530 {
│ │ │ │ │ -531 return interpolation_;
│ │ │ │ │ -532 }
│ │ │ │ │ -533
│ │ │ │ │ -_5_3_4 static constexpr unsigned int _s_i_z_e ()
│ │ │ │ │ -535 {
│ │ │ │ │ -536 return Traits::LocalBasisType::size();
│ │ │ │ │ -537 }
│ │ │ │ │ -538
│ │ │ │ │ -_5_3_9 static constexpr GeometryType _t_y_p_e ()
│ │ │ │ │ -540 {
│ │ │ │ │ -541 return GeometryTypes::cube(dim);
│ │ │ │ │ -542 }
│ │ │ │ │ -543
│ │ │ │ │ -544 private:
│ │ │ │ │ -545 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e basis_;
│ │ │ │ │ -546 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e coefficients_;
│ │ │ │ │ -547 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e interpolation_;
│ │ │ │ │ -548 };
│ │ │ │ │ -549
│ │ │ │ │ -550}
│ │ │ │ │ -551
│ │ │ │ │ -552#endif
│ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h
│ │ │ │ │ -_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h
│ │ │ │ │ +111 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0);
│ │ │ │ │ +112 if (totalOrder == 0) {
│ │ │ │ │ +113 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out);
│ │ │ │ │ +114 } else {
│ │ │ │ │ +115 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ │ +116 }
│ │ │ │ │ +117 }
│ │ │ │ │ +118
│ │ │ │ │ +_1_2_0 unsigned int _o_r_d_e_r () const
│ │ │ │ │ +121 {
│ │ │ │ │ +122 return 1;
│ │ │ │ │ +123 }
│ │ │ │ │ +124 };
│ │ │ │ │ +125}
│ │ │ │ │ +126#endif
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s
│ │ │ │ │ +Type traits for LocalBasisVirtualInterface.
│ │ │ │ │ +DDeeffiinniittiioonn common/localbasis.hh:35
│ │ │ │ │ _D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e
│ │ │ │ │ D DomainType
│ │ │ │ │ domain type
│ │ │ │ │ DDeeffiinniittiioonn common/localbasis.hh:43
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s
│ │ │ │ │ -traits helper struct
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e
│ │ │ │ │ -LB LocalBasisType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e
│ │ │ │ │ -LC LocalCoefficientsType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e
│ │ │ │ │ -LI LocalInterpolationType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nédélec elements of the first kind for cube elements.
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:496
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -const Traits::LocalInterpolationType & localInterpolation() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:529
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e
│ │ │ │ │ -static constexpr unsigned int size()
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:534
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nedelec1stKindCubeLocalFiniteElement()=default
│ │ │ │ │ -Default constructor.
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ -static constexpr GeometryType type()
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:539
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -const Traits::LocalCoefficientsType & localCoefficients() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:524
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s
│ │ │ │ │ -const Traits::LocalBasisType & localBasis() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:519
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)
│ │ │ │ │ -Constructor with explicitly given edge orientations.
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindcube.hh:514
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +Dual Lagrange shape functions on the simplex.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:35
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r
│ │ │ │ │ +unsigned int order() const
│ │ │ │ │ +Polynomial order of the shape functions.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:120
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n
│ │ │ │ │ +void evaluateFunction(const typename Traits::DomainType &in, std::vector<
│ │ │ │ │ +typename Traits::RangeType > &out) const
│ │ │ │ │ +Evaluate all shape functions.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:50
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_f_a_c_e_D_u_a_l
│ │ │ │ │ +static const bool faceDual
│ │ │ │ │ +Determines if the basis is only biorthogonal on adjacent faces.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:38
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l
│ │ │ │ │ +void partial(const std::array< unsigned int, dim > &order, const typename
│ │ │ │ │ +Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
│ │ │ │ │ +Evaluate partial derivatives of all shape functions.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:107
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e
│ │ │ │ │ +unsigned int size() const
│ │ │ │ │ +number of shape functions
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:44
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s
│ │ │ │ │ +LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<
│ │ │ │ │ +R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
│ │ │ │ │ +export type traits for function signature
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:41
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n
│ │ │ │ │ +void evaluateJacobian(const typename Traits::DomainType &in, std::vector<
│ │ │ │ │ +typename Traits::JacobianType > &out) const
│ │ │ │ │ +Evaluate Jacobian of all shape functions.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:78
│ │ │ │ │ _l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: nedelec1stkindsimplex.hh File Reference
│ │ │ │ +dune-localfunctions: dualp1localinterpolation.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,39 +65,31 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <numeric>
│ │ │ │ -
#include <dune/common/fmatrix.hh>
│ │ │ │ -
#include <dune/common/fvector.hh>
│ │ │ │ -
#include <dune/geometry/referenceelements.hh>
│ │ │ │ -
#include <dune/geometry/type.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localfiniteelementtraits.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ +
#include <vector>
│ │ │ │
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── encoding
│ │ │ │ │ @@ -1 +1 @@
│ │ │ │ │ -utf-8
│ │ │ │ │ +us-ascii
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,27 +1,20 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _n_e_d_e_l_e_c
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ + * _d_u_a_l_p_1
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -nedelec1stkindsimplex.hh File Reference
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ +dualp1localinterpolation.hh File Reference
│ │ │ │ │ +#include
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ -class _D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _d_i_m_,_ _k_ _>
│ │ │ │ │ - Nédélec elements of the first kind for simplex elements. _M_o_r_e_._._.
│ │ │ │ │ +class _D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _d_i_m_,_ _L_B_ _>
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: nedelec1stkindsimplex.hh Source File
│ │ │ │ +dune-localfunctions: dualp1localinterpolation.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,423 +70,85 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
│ │ │ │ +
5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH
│ │ │ │ +
6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ +
│ │ │ │
│ │ │ │ -
10#include <dune/common/fmatrix.hh>
│ │ │ │ -
11#include <dune/common/fvector.hh>
│ │ │ │ -
│ │ │ │ -
13#include <dune/geometry/referenceelements.hh>
│ │ │ │ -
14#include <dune/geometry/type.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
36 template<
class D,
class R,
int dim,
int k>
│ │ │ │ -
37 class Nedelec1stKindSimplexLocalBasis
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
43 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
│ │ │ │ -
44 R,dim,FieldVector<R,dim>,
│ │ │ │ -
45 FieldMatrix<R,dim,dim> >;
│ │ │ │ -
│ │ │ │ -
53 Nedelec1stKindSimplexLocalBasis()
│ │ │ │ -
│ │ │ │ -
55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
15 template<
int dim,
class LB>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
20 template<
typename F,
typename C>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
23 typename LB::Traits::DomainType x;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
26 const int faceDual(LB::faceDual);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
29 std::vector<C> p1Interpolation(dim+1);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
32 for (
int i=0; i<dim; i++)
│ │ │ │ +
│ │ │ │ +
34 p1Interpolation[0] = f(x);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
37 for (
int i=0; i<dim; i++) {
│ │ │ │ +
38 for (
int j=0; j<dim; j++)
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
41 p1Interpolation[i+1] = f(x);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
47 for (
int i=0; i<dim+1; i++) {
│ │ │ │ +
48 out[i] = 2*p1Interpolation[i]/(dim+2-faceDual);
│ │ │ │ +
│ │ │ │ +
50 for (
int j=0; j<i; j++)
│ │ │ │ +
51 out[i] += p1Interpolation[j]/(dim+2-faceDual);
│ │ │ │ +
│ │ │ │ +
53 for (
int j=i+1; j<=dim; j++)
│ │ │ │ +
54 out[i] += p1Interpolation[j]/(dim+2-faceDual);
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
60 Nedelec1stKindSimplexLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
│ │ │ │ -
61 : Nedelec1stKindSimplexLocalBasis()
│ │ │ │ -
│ │ │ │ -
63 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
│ │ │ │ -
64 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
68 static constexpr unsigned int size()
│ │ │ │ -
│ │ │ │ -
70 static_assert(dim==2 || dim==3,
"Nedelec shape functions are implemented only for 2d and 3d simplices.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
74 return k * (k+2) * (k+3) / 2;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
83 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
85 static_assert(k==1,
"Evaluating Nédélec shape functions is implemented only for first order.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
93 out[0] = {D(1) - in[1], in[0]};
│ │ │ │ -
94 out[1] = {in[1], -in[0]+D(1)};
│ │ │ │ -
95 out[2] = {-in[1], in[0]};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
│ │ │ │ -
118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
│ │ │ │ -
119 out[2] = { - in[1] , in[0] , 0 };
│ │ │ │ -
120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
│ │ │ │ -
121 out[4] = { -in[2], 0 , in[0] };
│ │ │ │ -
122 out[5] = { 0 , -in[2], in[1]};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
125 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
126 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
135 std::vector<typename Traits::JacobianType>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
140 out[0][0] = { 0, -1};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
146 out[2][0] = { 0, -1};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
151 out[0][0] = { 0,-1,-1};
│ │ │ │ -
152 out[0][1] = { 1, 0, 0};
│ │ │ │ -
153 out[0][2] = { 1, 0, 0};
│ │ │ │ -
│ │ │ │ -
155 out[1][0] = { 0, 1, 0};
│ │ │ │ -
156 out[1][1] = {-1, 0, -1};
│ │ │ │ -
157 out[1][2] = { 0, 1, 0};
│ │ │ │ -
│ │ │ │ -
159 out[2][0] = { 0, -1, 0};
│ │ │ │ -
160 out[2][1] = { 1, 0, 0};
│ │ │ │ -
161 out[2][2] = { 0, 0, 0};
│ │ │ │ -
│ │ │ │ -
163 out[3][0] = { 0, 0, 1};
│ │ │ │ -
164 out[3][1] = { 0, 0, 1};
│ │ │ │ -
165 out[3][2] = {-1, -1, 0};
│ │ │ │ -
│ │ │ │ -
167 out[4][0] = { 0, 0, -1};
│ │ │ │ -
168 out[4][1] = { 0, 0, 0};
│ │ │ │ -
169 out[4][2] = { 1, 0, 0};
│ │ │ │ -
│ │ │ │ -
171 out[5][0] = { 0, 0, 0};
│ │ │ │ -
172 out[5][1] = { 0, 0, -1};
│ │ │ │ -
173 out[5][2] = { 0, 1, 0};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
176 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
177 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
187 void partial(
const std::array<unsigned int, dim>& order,
│ │ │ │ -
│ │ │ │ -
189 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ -
192 if (totalOrder == 0) {
│ │ │ │ -
193 evaluateFunction(in, out);
│ │ │ │ -
194 }
else if (totalOrder == 1) {
│ │ │ │ -
195 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
247 for (std::size_t i=0; i<out.size(); i++)
│ │ │ │ -
248 out[i] *= edgeOrientation_[i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
252 for (std::size_t i = 0; i < size(); ++i)
│ │ │ │ -
253 for (std::size_t j = 0; j < dim; ++j)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
260 unsigned int order()
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
268 std::array<R,numberOfEdges> edgeOrientation_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
276 template <
int dim,
int k>
│ │ │ │ -
277 class Nedelec1stKindSimplexLocalCoefficients
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
281 Nedelec1stKindSimplexLocalCoefficients ()
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
284 static_assert(k==1,
"Only first-order Nédélec local coefficients are implemented.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
287 for (std::size_t i=0; i<size(); i++)
│ │ │ │ -
288 localKey_[i] = LocalKey(i,dim-1,0);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
292 std::size_t size()
const
│ │ │ │ -
│ │ │ │ -
294 static_assert(dim==2 || dim==3,
"Nédélec shape functions are implemented only for 2d and 3d simplices.");
│ │ │ │ -
295 return (dim==2) ? k * (k+2)
│ │ │ │ -
296 : k * (k+2) * (k+3) / 2;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
301 const LocalKey& localKey (std::size_t i)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
307 std::vector<LocalKey> localKey_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
315 class Nedelec1stKindSimplexLocalInterpolation
│ │ │ │ -
│ │ │ │ -
317 static constexpr auto dim = LB::Traits::dimDomain;
│ │ │ │ -
318 static constexpr auto size = LB::size();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
326 Nedelec1stKindSimplexLocalInterpolation (std::bitset<numberOfEdges> s = 0)
│ │ │ │ -
│ │ │ │ -
328 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::simplex(dim));
│ │ │ │ -
│ │ │ │ -
330 for (std::size_t i=0; i<numberOfEdges; i++)
│ │ │ │ -
331 m_[i] = refElement.position(i,dim-1);
│ │ │ │ -
│ │ │ │ -
333 for (std::size_t i=0; i<numberOfEdges; i++)
│ │ │ │ -
│ │ │ │ -
335 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
│ │ │ │ -
336 auto v0 = *vertexIterator;
│ │ │ │ -
337 auto v1 = *(++vertexIterator);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
│ │ │ │ -
343 edge_[i] *= (s[i]) ? -1.0 : 1.0;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
352 template<
typename F,
typename C>
│ │ │ │ -
353 void interpolate (
const F& f, std::vector<C>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
357 for (std::size_t i=0; i<size; i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
361 for (
int j=0; j<dim; j++)
│ │ │ │ -
362 out[i] += y[j]*edge_[i][j];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
368 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
│ │ │ │ -
│ │ │ │ -
370 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
401 template<
class D,
class R,
int dim,
int k>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
406 Impl::Nedelec1stKindSimplexLocalCoefficients<dim,k>,
│ │ │ │ -
407 Impl::Nedelec1stKindSimplexLocalInterpolation<Impl::Nedelec1stKindSimplexLocalBasis<D,R,dim,k> > >;
│ │ │ │ -
│ │ │ │ -
409 static_assert(dim==2 || dim==3,
"Nedelec elements are only implemented for 2d and 3d elements.");
│ │ │ │ -
410 static_assert(k==1,
"Nedelec elements of the first kind are currently only implemented for order k==1.");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
433 return coefficients_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
438 return interpolation_;
│ │ │ │ -
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
441 static constexpr unsigned int size ()
│ │ │ │ -
│ │ │ │ -
443 return Traits::LocalBasisType::size();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
446 static constexpr GeometryType
type ()
│ │ │ │ -
│ │ │ │ -
448 return GeometryTypes::simplex(dim);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ -
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ -
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ -
Nédélec elements of the first kind for simplex elements.
Definition nedelec1stkindsimplex.hh:403
│ │ │ │ -
static constexpr unsigned int size()
Definition nedelec1stkindsimplex.hh:441
│ │ │ │ -
Nedelec1stKindSimplexLocalFiniteElement()=default
Default constructor.
│ │ │ │ -
const Traits::LocalInterpolationType & localInterpolation() const
Definition nedelec1stkindsimplex.hh:436
│ │ │ │ -
Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)
Constructor with explicitly given edge orientations.
Definition nedelec1stkindsimplex.hh:421
│ │ │ │ -
static constexpr GeometryType type()
Definition nedelec1stkindsimplex.hh:446
│ │ │ │ -
const Traits::LocalBasisType & localBasis() const
Definition nedelec1stkindsimplex.hh:426
│ │ │ │ -
const Traits::LocalCoefficientsType & localCoefficients() const
Definition nedelec1stkindsimplex.hh:431
│ │ │ │ -
│ │ │ │ +
Definition dualp1localinterpolation.hh:17
│ │ │ │ +
void interpolate(const F &f, std::vector< C > &out) const
Local interpolation of a function.
Definition dualp1localinterpolation.hh:21
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,441 +1,78 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _n_e_d_e_l_e_c
│ │ │ │ │ -nedelec1stkindsimplex.hh
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ + * _d_u_a_l_p_1
│ │ │ │ │ +dualp1localinterpolation.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
│ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
│ │ │ │ │ +5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH
│ │ │ │ │ +6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH
│ │ │ │ │ 7
│ │ │ │ │ -8#include
│ │ │ │ │ +8#include
│ │ │ │ │ 9
│ │ │ │ │ -10#include
│ │ │ │ │ -11#include
│ │ │ │ │ -12
│ │ │ │ │ -13#include
│ │ │ │ │ -14#include
│ │ │ │ │ -15
│ │ │ │ │ -16#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ -17#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ -18#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ -19
│ │ │ │ │ -20namespace _D_u_n_e
│ │ │ │ │ -21{
│ │ │ │ │ -22namespace Impl
│ │ │ │ │ -23{
│ │ │ │ │ -36 template
│ │ │ │ │ -37 class Nedelec1stKindSimplexLocalBasis
│ │ │ │ │ -38 {
│ │ │ │ │ -39 // Number of edges of the reference simplex
│ │ │ │ │ -40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
│ │ │ │ │ -41
│ │ │ │ │ -42 public:
│ │ │ │ │ -43 using Traits = LocalBasisTraits,
│ │ │ │ │ -44 R,dim,FieldVector,
│ │ │ │ │ -45 FieldMatrix >;
│ │ │ │ │ -46
│ │ │ │ │ -53 Nedelec1stKindSimplexLocalBasis()
│ │ │ │ │ -54 {
│ │ │ │ │ -55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
│ │ │ │ │ +10namespace _D_u_n_e
│ │ │ │ │ +11{
│ │ │ │ │ +15 template
│ │ │ │ │ +_1_6 class _D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +17 {
│ │ │ │ │ +18 public:
│ │ │ │ │ +20 template
│ │ │ │ │ +_2_1 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const
│ │ │ │ │ +22 {
│ │ │ │ │ +23 typename LB::Traits::DomainType x;
│ │ │ │ │ +24 // If the dual functions are dual on the faces,
│ │ │ │ │ +25 // then adjust the interpolation weights
│ │ │ │ │ +26 const int faceDual(LB::faceDual);
│ │ │ │ │ +27
│ │ │ │ │ +28 // compute P1 interpolation coefficients
│ │ │ │ │ +29 std::vector p1Interpolation(dim+1);
│ │ │ │ │ +30
│ │ │ │ │ +31 // vertex 0
│ │ │ │ │ +32 for (int i=0; i edgeOrientation)
│ │ │ │ │ -61 : Nedelec1stKindSimplexLocalBasis()
│ │ │ │ │ -62 {
│ │ │ │ │ -63 for (std::size_t i=0; i& out) const
│ │ │ │ │ -84 {
│ │ │ │ │ -85 static_assert(k==1, "Evaluating Nédélec shape functions is implemented
│ │ │ │ │ -only for first order.");
│ │ │ │ │ -86 out.resize(size());
│ │ │ │ │ -87
│ │ │ │ │ -88 if (dim==2)
│ │ │ │ │ -89 {
│ │ │ │ │ -90 // First-order Nédélec shape functions on a triangle are of the form
│ │ │ │ │ -91 //
│ │ │ │ │ -92 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \in R
│ │ │ │ │ -93 out[0] = {D(1) - in[1], in[0]};
│ │ │ │ │ -94 out[1] = {in[1], -in[0]+D(1)};
│ │ │ │ │ -95 out[2] = {-in[1], in[0]};
│ │ │ │ │ -96 }
│ │ │ │ │ -97
│ │ │ │ │ -98 if constexpr (dim==3)
│ │ │ │ │ -99 {
│ │ │ │ │ -100 // First-order Nédélec shape functions on a tetrahedron are of the form
│ │ │ │ │ -101 //
│ │ │ │ │ -102 // a + b \times x, a, b \in R^3
│ │ │ │ │ -103 //
│ │ │ │ │ -104 // The following coefficients create the six basis vectors
│ │ │ │ │ -105 // that are dual to the edge degrees of freedom:
│ │ │ │ │ -106 //
│ │ │ │ │ -107 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}
│ │ │ │ │ -108 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}
│ │ │ │ │ -109 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}
│ │ │ │ │ -110 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}
│ │ │ │ │ -111 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}
│ │ │ │ │ -112 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}
│ │ │ │ │ -113 //
│ │ │ │ │ -114 // The following implementation uses these values, and simply
│ │ │ │ │ -115 // skips all the zeros.
│ │ │ │ │ -116
│ │ │ │ │ -117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
│ │ │ │ │ -118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
│ │ │ │ │ -119 out[2] = { - in[1] , in[0] , 0 };
│ │ │ │ │ -120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
│ │ │ │ │ -121 out[4] = { -in[2], 0 , in[0] };
│ │ │ │ │ -122 out[5] = { 0 , -in[2], in[1]};
│ │ │ │ │ -123 }
│ │ │ │ │ -124
│ │ │ │ │ -125 for (std::size_t i=0; i& out) const
│ │ │ │ │ -136 {
│ │ │ │ │ -137 out.resize(size());
│ │ │ │ │ -138 if (dim==2)
│ │ │ │ │ -139 {
│ │ │ │ │ -140 out[0][0] = { 0, -1};
│ │ │ │ │ -141 out[0][1] = { 1, 0};
│ │ │ │ │ -142
│ │ │ │ │ -143 out[1][0] = { 0, 1};
│ │ │ │ │ -144 out[1][1] = {-1, 0};
│ │ │ │ │ -145
│ │ │ │ │ -146 out[2][0] = { 0, -1};
│ │ │ │ │ -147 out[2][1] = { 1, 0};
│ │ │ │ │ -148 }
│ │ │ │ │ -149 if (dim==3)
│ │ │ │ │ -150 {
│ │ │ │ │ -151 out[0][0] = { 0,-1,-1};
│ │ │ │ │ -152 out[0][1] = { 1, 0, 0};
│ │ │ │ │ -153 out[0][2] = { 1, 0, 0};
│ │ │ │ │ -154
│ │ │ │ │ -155 out[1][0] = { 0, 1, 0};
│ │ │ │ │ -156 out[1][1] = {-1, 0, -1};
│ │ │ │ │ -157 out[1][2] = { 0, 1, 0};
│ │ │ │ │ -158
│ │ │ │ │ -159 out[2][0] = { 0, -1, 0};
│ │ │ │ │ -160 out[2][1] = { 1, 0, 0};
│ │ │ │ │ -161 out[2][2] = { 0, 0, 0};
│ │ │ │ │ -162
│ │ │ │ │ -163 out[3][0] = { 0, 0, 1};
│ │ │ │ │ -164 out[3][1] = { 0, 0, 1};
│ │ │ │ │ -165 out[3][2] = {-1, -1, 0};
│ │ │ │ │ -166
│ │ │ │ │ -167 out[4][0] = { 0, 0, -1};
│ │ │ │ │ -168 out[4][1] = { 0, 0, 0};
│ │ │ │ │ -169 out[4][2] = { 1, 0, 0};
│ │ │ │ │ -170
│ │ │ │ │ -171 out[5][0] = { 0, 0, 0};
│ │ │ │ │ -172 out[5][1] = { 0, 0, -1};
│ │ │ │ │ -173 out[5][2] = { 0, 1, 0};
│ │ │ │ │ -174 }
│ │ │ │ │ -175
│ │ │ │ │ -176 for (std::size_t i=0; i& order,
│ │ │ │ │ -188 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in,
│ │ │ │ │ -189 std::vector& out) const
│ │ │ │ │ -190 {
│ │ │ │ │ -191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
│ │ │ │ │ -192 if (totalOrder == 0) {
│ │ │ │ │ -193 evaluateFunction(in, out);
│ │ │ │ │ -194 } else if (totalOrder == 1) {
│ │ │ │ │ -195 auto const direction = std::distance(order.begin(), std::find(order.begin
│ │ │ │ │ -(), order.end(), 1));
│ │ │ │ │ -196 out.resize(size());
│ │ │ │ │ -197
│ │ │ │ │ -198 if (dim==2)
│ │ │ │ │ -199 {
│ │ │ │ │ -200 if (direction==0)
│ │ │ │ │ -201 {
│ │ │ │ │ -202 out[0] = {0, 1};
│ │ │ │ │ -203 out[1] = {0, -1};
│ │ │ │ │ -204 out[2] = {0, 1};
│ │ │ │ │ -205 }
│ │ │ │ │ -206 else
│ │ │ │ │ -207 {
│ │ │ │ │ -208 out[0] = {-1, 0};
│ │ │ │ │ -209 out[1] = { 1, 0};
│ │ │ │ │ -210 out[2] = {-1, 0};
│ │ │ │ │ -211 }
│ │ │ │ │ -212 }
│ │ │ │ │ -213
│ │ │ │ │ -214 if (dim==3)
│ │ │ │ │ -215 {
│ │ │ │ │ -216 switch (direction)
│ │ │ │ │ -217 {
│ │ │ │ │ -218 case 0:
│ │ │ │ │ -219 out[0] = { 0, 1, 1};
│ │ │ │ │ -220 out[1] = { 0,-1, 0};
│ │ │ │ │ -221 out[2] = { 0, 1, 0};
│ │ │ │ │ -222 out[3] = { 0, 0,-1};
│ │ │ │ │ -223 out[4] = { 0, 0, 1};
│ │ │ │ │ -224 out[5] = { 0, 0, 0};
│ │ │ │ │ -225 break;
│ │ │ │ │ -226
│ │ │ │ │ -227 case 1:
│ │ │ │ │ -228 out[0] = {-1, 0, 0};
│ │ │ │ │ -229 out[1] = { 1, 0, 1};
│ │ │ │ │ -230 out[2] = {-1, 0, 0};
│ │ │ │ │ -231 out[3] = { 0, 0,-1};
│ │ │ │ │ -232 out[4] = { 0, 0, 0};
│ │ │ │ │ -233 out[5] = { 0, 0, 1};
│ │ │ │ │ -234 break;
│ │ │ │ │ -235
│ │ │ │ │ -236 case 2:
│ │ │ │ │ -237 out[0] = {-1, 0, 0};
│ │ │ │ │ -238 out[1] = { 0,-1, 0};
│ │ │ │ │ -239 out[2] = { 0, 0, 0};
│ │ │ │ │ -240 out[3] = { 1, 1, 0};
│ │ │ │ │ -241 out[4] = {-1, 0, 0};
│ │ │ │ │ -242 out[5] = { 0,-1, 0};
│ │ │ │ │ -243 break;
│ │ │ │ │ -244 }
│ │ │ │ │ -245 }
│ │ │ │ │ -246
│ │ │ │ │ -247 for (std::size_t i=0; i edgeOrientation_;
│ │ │ │ │ -269 };
│ │ │ │ │ -270
│ │ │ │ │ -271
│ │ │ │ │ -276 template
│ │ │ │ │ -277 class Nedelec1stKindSimplexLocalCoefficients
│ │ │ │ │ -278 {
│ │ │ │ │ -279 public:
│ │ │ │ │ -281 Nedelec1stKindSimplexLocalCoefficients ()
│ │ │ │ │ -282 : localKey_(size())
│ │ │ │ │ -283 {
│ │ │ │ │ -284 static_assert(k==1, "Only first-order Nédélec local coefficients are
│ │ │ │ │ -implemented.");
│ │ │ │ │ -285 // Assign all degrees of freedom to edges
│ │ │ │ │ -286 // TODO: This is correct only for first-order Nédélec elements
│ │ │ │ │ -287 for (std::size_t i=0; i localKey_;
│ │ │ │ │ -308 };
│ │ │ │ │ -309
│ │ │ │ │ -314 template
│ │ │ │ │ -315 class Nedelec1stKindSimplexLocalInterpolation
│ │ │ │ │ -316 {
│ │ │ │ │ -317 static constexpr auto dim = LB::Traits::dimDomain;
│ │ │ │ │ -318 static constexpr auto size = LB::size();
│ │ │ │ │ -319
│ │ │ │ │ -320 // Number of edges of the reference simplex
│ │ │ │ │ -321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
│ │ │ │ │ -322
│ │ │ │ │ -323 public:
│ │ │ │ │ -324
│ │ │ │ │ -326 Nedelec1stKindSimplexLocalInterpolation (std::bitset s = 0)
│ │ │ │ │ -327 {
│ │ │ │ │ -328 auto refElement = Dune::referenceElement(GeometryTypes::simplex
│ │ │ │ │ -(dim));
│ │ │ │ │ -329
│ │ │ │ │ -330 for (std::size_t i=0; iv1)
│ │ │ │ │ -341 std::swap(v0,v1);
│ │ │ │ │ -342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
│ │ │ │ │ -343 edge_[i] *= (s[i]) ? -1.0 : 1.0;
│ │ │ │ │ -344 }
│ │ │ │ │ -345 }
│ │ │ │ │ -346
│ │ │ │ │ -352 template
│ │ │ │ │ -353 void interpolate (const F& f, std::vector& out) const
│ │ │ │ │ -354 {
│ │ │ │ │ -355 out.resize(size);
│ │ │ │ │ -356
│ │ │ │ │ -357 for (std::size_t i=0; i m_;
│ │ │ │ │ -369 // Edges of the reference simplex
│ │ │ │ │ -370 std::array edge_;
│ │ │ │ │ -371 };
│ │ │ │ │ -372
│ │ │ │ │ -373}
│ │ │ │ │ -374
│ │ │ │ │ -375
│ │ │ │ │ -401 template
│ │ │ │ │ -_4_0_2 class _N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -403 {
│ │ │ │ │ -404 public:
│ │ │ │ │ -_4_0_5 using _T_r_a_i_t_s = _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_<_I_m_p_l_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_k_>,
│ │ │ │ │ -406 Impl::Nedelec1stKindSimplexLocalCoefficients,
│ │ │ │ │ -407 Impl::Nedelec1stKindSimplexLocalInterpolation > >;
│ │ │ │ │ -408
│ │ │ │ │ -409 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for
│ │ │ │ │ -2d and 3d elements.");
│ │ │ │ │ -410 static_assert(k==1, "Nedelec elements of the first kind are currently only
│ │ │ │ │ -implemented for order k==1.");
│ │ │ │ │ -411
│ │ │ │ │ -_4_1_4 _N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t() = default;
│ │ │ │ │ -415
│ │ │ │ │ -_4_2_1 _N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t (std::bitset s) :
│ │ │ │ │ -422 basis_(s),
│ │ │ │ │ -423 interpolation_(s)
│ │ │ │ │ -424 {}
│ │ │ │ │ -425
│ │ │ │ │ -_4_2_6 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const
│ │ │ │ │ -427 {
│ │ │ │ │ -428 return basis_;
│ │ │ │ │ -429 }
│ │ │ │ │ -430
│ │ │ │ │ -_4_3_1 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const
│ │ │ │ │ -432 {
│ │ │ │ │ -433 return coefficients_;
│ │ │ │ │ -434 }
│ │ │ │ │ -435
│ │ │ │ │ -_4_3_6 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const
│ │ │ │ │ -437 {
│ │ │ │ │ -438 return interpolation_;
│ │ │ │ │ -439 }
│ │ │ │ │ -440
│ │ │ │ │ -_4_4_1 static constexpr unsigned int _s_i_z_e ()
│ │ │ │ │ -442 {
│ │ │ │ │ -443 return Traits::LocalBasisType::size();
│ │ │ │ │ -444 }
│ │ │ │ │ -445
│ │ │ │ │ -_4_4_6 static constexpr GeometryType _t_y_p_e ()
│ │ │ │ │ -447 {
│ │ │ │ │ -448 return GeometryTypes::simplex(dim);
│ │ │ │ │ -449 }
│ │ │ │ │ -450
│ │ │ │ │ -451 private:
│ │ │ │ │ -452 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e basis_;
│ │ │ │ │ -453 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e coefficients_;
│ │ │ │ │ -454 typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e interpolation_;
│ │ │ │ │ -455 };
│ │ │ │ │ -456
│ │ │ │ │ -457}
│ │ │ │ │ -458
│ │ │ │ │ -459#endif
│ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h
│ │ │ │ │ -_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h
│ │ │ │ │ +58 };
│ │ │ │ │ +59}
│ │ │ │ │ +60
│ │ │ │ │ +61#endif
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e
│ │ │ │ │ -D DomainType
│ │ │ │ │ -domain type
│ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s
│ │ │ │ │ -traits helper struct
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:13
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e
│ │ │ │ │ -LB LocalBasisType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:16
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e
│ │ │ │ │ -LC LocalCoefficientsType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:20
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e
│ │ │ │ │ -LI LocalInterpolationType
│ │ │ │ │ -DDeeffiinniittiioonn localfiniteelementtraits.hh:24
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nédélec elements of the first kind for simplex elements.
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:403
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e
│ │ │ │ │ -static constexpr unsigned int size()
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:441
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nedelec1stKindSimplexLocalFiniteElement()=default
│ │ │ │ │ -Default constructor.
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -const Traits::LocalInterpolationType & localInterpolation() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:436
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:
│ │ │ │ │ -_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)
│ │ │ │ │ -Constructor with explicitly given edge orientations.
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:421
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ -static constexpr GeometryType type()
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:446
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s
│ │ │ │ │ -const Traits::LocalBasisType & localBasis() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:426
│ │ │ │ │ -_D_u_n_e_:_:_N_e_d_e_l_e_c_1_s_t_K_i_n_d_S_i_m_p_l_e_x_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -const Traits::LocalCoefficientsType & localCoefficients() const
│ │ │ │ │ -DDeeffiinniittiioonn nedelec1stkindsimplex.hh:431
│ │ │ │ │ -_l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localinterpolation.hh:17
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e
│ │ │ │ │ +void interpolate(const F &f, std::vector< C > &out) const
│ │ │ │ │ +Local interpolation of a function.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localinterpolation.hh:21
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: power.hh File Reference
│ │ │ │ +dune-localfunctions: dualp1.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,43 +65,36 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <cstddef>
│ │ │ │ -
#include <memory>
│ │ │ │ -
#include <dune/geometry/type.hh>
│ │ │ │ -
#include <dune/localfunctions/meta/power/basis.hh>
│ │ │ │ -
#include <dune/localfunctions/meta/power/coefficients.hh>
│ │ │ │ -
#include <dune/localfunctions/meta/power/interpolation.hh>
│ │ │ │ +
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,33 +1,24 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _m_e_t_a
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -power.hh File Reference
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ +dualp1.hh File Reference
│ │ │ │ │ #include
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_b_a_s_i_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h>
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h>
│ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ +#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ - class _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _B_a_c_k_e_n_d_,_ _d_i_m_R_ _>
│ │ │ │ │ - Meta-finite element turning a scalar finite element into vector-valued
│ │ │ │ │ - one. _M_o_r_e_._._.
│ │ │ │ │ -
│ │ │ │ │ -struct _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _B_a_c_k_e_n_d_,_ _d_i_m_R_ _>_:_:_T_r_a_i_t_s
│ │ │ │ │ - types of component objects _M_o_r_e_._._.
│ │ │ │ │ -
│ │ │ │ │ - class _D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_<_ _B_a_c_k_e_n_d_F_i_n_i_t_e_E_l_e_m_e_n_t_,_ _d_i_m_R_ _>
│ │ │ │ │ - Factory for meta-finite elements turning scalar finite elements into
│ │ │ │ │ - vector-valued ones. _M_o_r_e_._._.
│ │ │ │ │ +class _D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _d_i_m_,_ _f_a_c_e_D_u_a_l_ _>
│ │ │ │ │ + The local dual p1 finite element on simplices. _M_o_r_e_._._.
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: power.hh Source File
│ │ │ │ +dune-localfunctions: dualp1.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,144 +70,118 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
│ │ │ │ -
6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ -
7#define DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
12#include <dune/geometry/type.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
│ │ │ │ +
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
28 template<
class Backend, std::
size_t dimR>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
42 std::shared_ptr<const Backend> backend;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
33 template<
class D,
class R,
int dim,
bool faceDual=false>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
54 backend(new Backend(backend_)),
│ │ │ │ -
55 basis_(backend->
basis()),
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
67 basis_(backend->
basis()),
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
84 {
return coefficients_; }
│ │ │ │ +
│ │ │ │ +
76 static constexpr GeometryType
type ()
│ │ │ │ +
│ │ │ │ +
78 return GeometryTypes::simplex(dim);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
91 {
return interpolation_; }
│ │ │ │ -
│ │ │ │ -
93 GeometryType
type()
const {
return backend->type(); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
105 template<
class BackendFiniteElement, std::
size_t dimR>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
125 make(
const std::shared_ptr<const BackendFiniteElement> &backendSPtr)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Meta-finite element turning a scalar finite element into vector-valued one.
Definition power.hh:29
│ │ │ │ -
const Traits::Basis & basis() const
Extract basis of this finite element.
Definition power.hh:77
│ │ │ │ -
GeometryType type() const
Extract geometry type of this finite element.
Definition power.hh:93
│ │ │ │ -
const Traits::Interpolation & interpolation() const
Extract interpolation of this finite element.
Definition power.hh:90
│ │ │ │ -
PowerFiniteElement(const Backend &backend_)
Construct a finite element.
Definition power.hh:53
│ │ │ │ -
PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)
Construct a finite element.
Definition power.hh:65
│ │ │ │ -
const Traits::Coefficients & coefficients() const
Extract coefficients of this finite element.
Definition power.hh:83
│ │ │ │ -
types of component objects
Definition power.hh:32
│ │ │ │ -
PowerBasis< typename Backend::Traits::Basis, dimR > Basis
type of the Basis
Definition power.hh:34
│ │ │ │ -
PowerCoefficients Coefficients
type of the Coefficients
Definition power.hh:36
│ │ │ │ -
PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::Traits > Interpolation
type of the Interpolation
Definition power.hh:39
│ │ │ │ -
Factory for meta-finite elements turning scalar finite elements into vector-valued ones.
Definition power.hh:107
│ │ │ │ -
const FiniteElement make(const std::shared_ptr< const BackendFiniteElement > &backendSPtr) const
create a finite element
Definition power.hh:125
│ │ │ │ -
const FiniteElement make(const BackendFiniteElement &backend) const
create a finite element
Definition power.hh:117
│ │ │ │ -
PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement
Type of the finite element.
Definition power.hh:110
│ │ │ │ -
Meta-basis turning a scalar basis into vector-valued basis.
Definition meta/power/basis.hh:26
│ │ │ │ -
Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
Definition meta/power/coefficients.hh:23
│ │ │ │ -
Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
Definition meta/power/interpolation.hh:26
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ +
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ +
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ +
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │ +
The local dual p1 finite element on simplices.
Definition dualp1.hh:35
│ │ │ │ +
DualP1LocalFiniteElement()
Definition dualp1.hh:44
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition dualp1.hh:69
│ │ │ │ +
LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >, DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim, DualP1LocalBasis< D, R, dim, faceDual > > > Traits
Definition dualp1.hh:40
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition dualp1.hh:63
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition dualp1.hh:49
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition dualp1.hh:56
│ │ │ │ +
static constexpr GeometryType type()
Definition dualp1.hh:76
│ │ │ │ +
Dual Lagrange shape functions on the simplex.
Definition dualp1localbasis.hh:35
│ │ │ │ +
Local coefficients for dual simplex P1 elements.
Definition dualp1localcoefficients.hh:24
│ │ │ │ +
Definition dualp1localinterpolation.hh:17
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,171 +1,130 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _m_e_t_a
│ │ │ │ │ -power.hh
│ │ │ │ │ + * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ +dualp1.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5
│ │ │ │ │ -6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ │ -7#define DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ │ -8
│ │ │ │ │ -9#include
│ │ │ │ │ -10#include
│ │ │ │ │ -11
│ │ │ │ │ -12#include
│ │ │ │ │ -13
│ │ │ │ │ -14#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_b_a_s_i_s_._h_h>
│ │ │ │ │ -15#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_c_o_e_f_f_i_c_i_e_n_t_s_._h_h>
│ │ │ │ │ -16#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_m_e_t_a_/_p_o_w_e_r_/_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h>
│ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
│ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
│ │ │ │ │ +7
│ │ │ │ │ +8#include
│ │ │ │ │ +9
│ │ │ │ │ +10#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h>
│ │ │ │ │ +11#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +12#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +13#include "_d_u_a_l_p_1_/_d_u_a_l_p_1_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ +14
│ │ │ │ │ +15namespace _D_u_n_e
│ │ │ │ │ +16{
│ │ │ │ │ 17
│ │ │ │ │ -18namespace _D_u_n_e {
│ │ │ │ │ -19
│ │ │ │ │ -22
│ │ │ │ │ -28 template
│ │ │ │ │ -_2_9 class _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t {
│ │ │ │ │ -30 public:
│ │ │ │ │ -_3_2 struct _T_r_a_i_t_s {
│ │ │ │ │ -_3_4 typedef _P_o_w_e_r_B_a_s_i_s_<_t_y_p_e_n_a_m_e_ _B_a_c_k_e_n_d_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s_,_ _d_i_m_R_> _B_a_s_i_s;
│ │ │ │ │ -_3_6 typedef _P_o_w_e_r_C_o_e_f_f_i_c_i_e_n_t_s _C_o_e_f_f_i_c_i_e_n_t_s;
│ │ │ │ │ -38 typedef _P_o_w_e_r_I_n_t_e_r_p_o_l_a_t_i_o_n _I_n_t_e_r_p_o_l_a_t_i_o_n;
│ │ │ │ │ -40 };
│ │ │ │ │ -41 private:
│ │ │ │ │ -42 std::shared_ptr backend;
│ │ │ │ │ -43 typename _T_r_a_i_t_s_:_:_B_a_s_i_s basis_;
│ │ │ │ │ -44 typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s coefficients_;
│ │ │ │ │ -45 typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n interpolation_;
│ │ │ │ │ +33 template
│ │ │ │ │ +_3_4 class _D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +35 {
│ │ │ │ │ +36 public:
│ │ │ │ │ +39 typedef
│ │ │ │ │ +_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_<_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_f_a_c_e_D_u_a_l_>,_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_<_d_i_m_>,
│ │ │ │ │ +_4_0 _D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_d_i_m_,_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_f_a_c_e_D_u_a_l_> > > _T_r_a_i_t_s;
│ │ │ │ │ +41
│ │ │ │ │ +_4_4 _D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t ()
│ │ │ │ │ +45 {}
│ │ │ │ │ 46
│ │ │ │ │ -47 public:
│ │ │ │ │ -49
│ │ │ │ │ -_5_3 _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t(const Backend &backend_) :
│ │ │ │ │ -54 backend(new Backend(backend_)),
│ │ │ │ │ -55 basis_(backend->_b_a_s_i_s()),
│ │ │ │ │ -56 coefficients_(backend->_c_o_e_f_f_i_c_i_e_n_t_s(), dimR),
│ │ │ │ │ -57 interpolation_(backend->_i_n_t_e_r_p_o_l_a_t_i_o_n())
│ │ │ │ │ -58 { }
│ │ │ │ │ -59
│ │ │ │ │ -61
│ │ │ │ │ -_6_5 _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t(const std::shared_ptr &backendSPtr) :
│ │ │ │ │ -66 backend(backendSPtr),
│ │ │ │ │ -67 basis_(backend->_b_a_s_i_s()),
│ │ │ │ │ -68 coefficients_(backend->_c_o_e_f_f_i_c_i_e_n_t_s(), dimR),
│ │ │ │ │ -69 interpolation_(backend->_i_n_t_e_r_p_o_l_a_t_i_o_n())
│ │ │ │ │ -70 { }
│ │ │ │ │ -71
│ │ │ │ │ +_4_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e& _l_o_c_a_l_B_a_s_i_s () const
│ │ │ │ │ +50 {
│ │ │ │ │ +51 return basis;
│ │ │ │ │ +52 }
│ │ │ │ │ +53
│ │ │ │ │ +_5_6 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const
│ │ │ │ │ +57 {
│ │ │ │ │ +58 return coefficients;
│ │ │ │ │ +59 }
│ │ │ │ │ +60
│ │ │ │ │ +_6_3 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const
│ │ │ │ │ +64 {
│ │ │ │ │ +65 return interpolation;
│ │ │ │ │ +66 }
│ │ │ │ │ +67
│ │ │ │ │ +_6_9 unsigned int _s_i_z_e () const
│ │ │ │ │ +70 {
│ │ │ │ │ +71 return basis.size();
│ │ │ │ │ +72 }
│ │ │ │ │ 73
│ │ │ │ │ -_7_7 const typename _T_r_a_i_t_s_:_:_B_a_s_i_s& _b_a_s_i_s() const { return basis_; }
│ │ │ │ │ -79
│ │ │ │ │ -_8_3 const typename _T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s& _c_o_e_f_f_i_c_i_e_n_t_s() const
│ │ │ │ │ -84 { return coefficients_; }
│ │ │ │ │ +_7_6 static constexpr GeometryType _t_y_p_e ()
│ │ │ │ │ +77 {
│ │ │ │ │ +78 return GeometryTypes::simplex(dim);
│ │ │ │ │ +79 }
│ │ │ │ │ +80
│ │ │ │ │ +81 private:
│ │ │ │ │ +82 _D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_f_a_c_e_D_u_a_l_> basis;
│ │ │ │ │ +83 _D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_<_d_i_m_> coefficients;
│ │ │ │ │ +84 _D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_d_i_m_,_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s_<_D_,_R_,_d_i_m_,_f_a_c_e_D_u_a_l_> >
│ │ │ │ │ +interpolation;
│ │ │ │ │ +85 };
│ │ │ │ │ 86
│ │ │ │ │ -_9_0 const typename _T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n& _i_n_t_e_r_p_o_l_a_t_i_o_n() const
│ │ │ │ │ -91 { return interpolation_; }
│ │ │ │ │ -_9_3 GeometryType _t_y_p_e() const { return backend->type(); }
│ │ │ │ │ -94 };
│ │ │ │ │ -95
│ │ │ │ │ -98
│ │ │ │ │ -105 template
│ │ │ │ │ -_1_0_6 class _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y
│ │ │ │ │ -107 {
│ │ │ │ │ -108 public:
│ │ │ │ │ -_1_1_0 typedef _P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_<_B_a_c_k_e_n_d_F_i_n_i_t_e_E_l_e_m_e_n_t_,_ _d_i_m_R_> _F_i_n_i_t_e_E_l_e_m_e_n_t;
│ │ │ │ │ -111
│ │ │ │ │ -113
│ │ │ │ │ -_1_1_7 const _F_i_n_i_t_e_E_l_e_m_e_n_t _m_a_k_e(const BackendFiniteElement &backend) const
│ │ │ │ │ -118 { return _F_i_n_i_t_e_E_l_e_m_e_n_t(backend); }
│ │ │ │ │ -120
│ │ │ │ │ -124 const _F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -_1_2_5 _m_a_k_e(const std::shared_ptr &backendSPtr) const
│ │ │ │ │ -126 { return _F_i_n_i_t_e_E_l_e_m_e_n_t(backendSPtr); }
│ │ │ │ │ -127
│ │ │ │ │ -128 };
│ │ │ │ │ -129
│ │ │ │ │ -130} // namespace Dune
│ │ │ │ │ -131
│ │ │ │ │ -132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH
│ │ │ │ │ +87
│ │ │ │ │ +88
│ │ │ │ │ +89}
│ │ │ │ │ +90
│ │ │ │ │ +91#endif
│ │ │ │ │ +_d_u_a_l_p_1_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h
│ │ │ │ │ +_d_u_a_l_p_1_l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ +_d_u_a_l_p_1_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h
│ │ │ │ │ +_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -Meta-finite element turning a scalar finite element into vector-valued one.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:29
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_b_a_s_i_s
│ │ │ │ │ -const Traits::Basis & basis() const
│ │ │ │ │ -Extract basis of this finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:77
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ -GeometryType type() const
│ │ │ │ │ -Extract geometry type of this finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:93
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_i_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -const Traits::Interpolation & interpolation() const
│ │ │ │ │ -Extract interpolation of this finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:90
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -PowerFiniteElement(const Backend &backend_)
│ │ │ │ │ -Construct a finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:53
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)
│ │ │ │ │ -Construct a finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:65
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_c_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -const Traits::Coefficients & coefficients() const
│ │ │ │ │ -Extract coefficients of this finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:83
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s
│ │ │ │ │ -types of component objects
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:32
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_B_a_s_i_s
│ │ │ │ │ -PowerBasis< typename Backend::Traits::Basis, dimR > Basis
│ │ │ │ │ -type of the Basis
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:34
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -PowerCoefficients Coefficients
│ │ │ │ │ -type of the Coefficients
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:36
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s_:_:_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::
│ │ │ │ │ -Traits > Interpolation
│ │ │ │ │ -type of the Interpolation
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:39
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y
│ │ │ │ │ -Factory for meta-finite elements turning scalar finite elements into vector-
│ │ │ │ │ -valued ones.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:107
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_m_a_k_e
│ │ │ │ │ -const FiniteElement make(const std::shared_ptr< const BackendFiniteElement >
│ │ │ │ │ -&backendSPtr) const
│ │ │ │ │ -create a finite element
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:125
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_m_a_k_e
│ │ │ │ │ -const FiniteElement make(const BackendFiniteElement &backend) const
│ │ │ │ │ -create a finite element
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:117
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_F_i_n_i_t_e_E_l_e_m_e_n_t_F_a_c_t_o_r_y_:_:_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ -PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement
│ │ │ │ │ -Type of the finite element.
│ │ │ │ │ -DDeeffiinniittiioonn power.hh:110
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_B_a_s_i_s
│ │ │ │ │ -Meta-basis turning a scalar basis into vector-valued basis.
│ │ │ │ │ -DDeeffiinniittiioonn meta/power/basis.hh:26
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -Meta-coefficients turning a scalar coefficients into vector-valued
│ │ │ │ │ -coefficients.
│ │ │ │ │ -DDeeffiinniittiioonn meta/power/coefficients.hh:23
│ │ │ │ │ -_D_u_n_e_:_:_P_o_w_e_r_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -Meta-interpolation turning a scalar interpolation into vector-valued
│ │ │ │ │ -interpolation.
│ │ │ │ │ -DDeeffiinniittiioonn meta/power/interpolation.hh:26
│ │ │ │ │ -_b_a_s_i_s_._h_h
│ │ │ │ │ -_c_o_e_f_f_i_c_i_e_n_t_s_._h_h
│ │ │ │ │ -_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s
│ │ │ │ │ +traits helper struct
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:13
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e
│ │ │ │ │ +LB LocalBasisType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:16
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e
│ │ │ │ │ +LC LocalCoefficientsType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:20
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e
│ │ │ │ │ +LI LocalInterpolationType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +The local dual p1 finite element on simplices.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:35
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +DualP1LocalFiniteElement()
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:44
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e
│ │ │ │ │ +unsigned int size() const
│ │ │ │ │ +Number of shape functions in this finite element.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:69
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s
│ │ │ │ │ +LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >,
│ │ │ │ │ +DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim,
│ │ │ │ │ +DualP1LocalBasis< D, R, dim, faceDual > > > Traits
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:40
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +const Traits::LocalInterpolationType & localInterpolation() const
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:63
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +const Traits::LocalBasisType & localBasis() const
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:49
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +const Traits::LocalCoefficientsType & localCoefficients() const
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:56
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ +static constexpr GeometryType type()
│ │ │ │ │ +DDeeffiinniittiioonn dualp1.hh:76
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +Dual Lagrange shape functions on the simplex.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localbasis.hh:35
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +Local coefficients for dual simplex P1 elements.
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localcoefficients.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_D_u_a_l_P_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +DDeeffiinniittiioonn dualp1localinterpolation.hh:17
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localinterpolation.hh File Reference
│ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2d.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,34 +65,36 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -
#include <vector>
│ │ │ │ -
#include <dune/common/fvector.hh>
│ │ │ │ -
#include <dune/common/fmatrix.hh>
│ │ │ │ +
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,23 +1,28 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -dualq1localinterpolation.hh File Reference
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ +brezzidouglasmarini2simplex2d.hh File Reference
│ │ │ │ │ +#include
│ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ -class _D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_ _d_i_m_,_ _L_B_ _>
│ │ │ │ │ +class _D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _>
│ │ │ │ │ + Second order Brezzi-Douglas-Marini shape functions on triangles.
│ │ │ │ │ + _M_o_r_e_._._.
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localinterpolation.hh Source File
│ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2d.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,106 +70,123 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
│ │ │ │ -
6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
11#include <dune/common/fvector.hh>
│ │ │ │ -
12#include <dune/common/fmatrix.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
20 template<
int dim,
class LB>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
25 void setCoefficients(
const std::array<Dune::FieldVector<
typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)>& coefficients)
│ │ │ │ -
│ │ │ │ -
27 coefficients_ = coefficients;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
32 template<
typename F,
typename C>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
35 typename LB::Traits::DomainType x;
│ │ │ │ -
│ │ │ │ -
37 const int size = 1<<dim;
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │ +
│ │ │ │ +
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
25 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
40 Dune::FieldVector<C,size> q1Coefficients;
│ │ │ │ -
│ │ │ │ -
42 for (
int i=0; i< (1<<dim); i++) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
47 for (
int j=0; j<dim; j++)
│ │ │ │ -
48 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
│ │ │ │ -
│ │ │ │ -
50 q1Coefficients[i] = f(x);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
57 Dune::FieldMatrix<C,size,size> mat;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
59 for (
int i=0; i<size; i++)
│ │ │ │ -
60 for (
int j=0; j<size; j++)
│ │ │ │ -
61 mat[i][j] = coefficients_[j][i];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
64 Dune::FieldVector<C,size> sol(0);
│ │ │ │ -
│ │ │ │ -
66 mat.solve(sol,q1Coefficients);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
69 for (
int i=0; i<size; i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
74 std::array<Dune::FieldVector<
typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)> coefficients_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
70 static constexpr GeometryType
type ()
│ │ │ │ +
│ │ │ │ +
72 return GeometryTypes::triangle;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Definition dualq1localinterpolation.hh:22
│ │ │ │ -
void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
Definition dualq1localinterpolation.hh:25
│ │ │ │ -
void interpolate(const F &f, std::vector< C > &out) const
Local interpolation of a function.
Definition dualq1localinterpolation.hh:33
│ │ │ │ +
Second order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2d.hh:27
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini2simplex2d.hh:54
│ │ │ │ +
LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >, BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation< BDM2Simplex2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini2simplex2d.hh:33
│ │ │ │ +
BDM2Simplex2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini2simplex2d.hh:36
│ │ │ │ +
static constexpr GeometryType type()
Definition brezzidouglasmarini2simplex2d.hh:70
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini2simplex2d.hh:49
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini2simplex2d.hh:59
│ │ │ │ +
BDM2Simplex2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2d.hh:44
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini2simplex2d.hh:65
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on triangles.
Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
│ │ │ │ +
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ +
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ +
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ +
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,102 +1,143 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ -dualq1localinterpolation.hh
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ +brezzidouglasmarini2simplex2d.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
│ │ │ │ │ -6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
│ │ │ │ │ +5#ifndef
│ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ +6#define
│ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ 7
│ │ │ │ │ -8#include
│ │ │ │ │ -9#include
│ │ │ │ │ -10
│ │ │ │ │ -11#include
│ │ │ │ │ -12#include
│ │ │ │ │ -13
│ │ │ │ │ -14namespace _D_u_n_e
│ │ │ │ │ -15{
│ │ │ │ │ -16
│ │ │ │ │ -20 template
│ │ │ │ │ -_2_1 class _D_u_a_l_Q_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -22 {
│ │ │ │ │ -23 public:
│ │ │ │ │ -24
│ │ │ │ │ -_2_5 void _s_e_t_C_o_e_f_f_i_c_i_e_n_t_s(const std::array ,(1<& coefficients)
│ │ │ │ │ -26 {
│ │ │ │ │ -27 coefficients_ = coefficients;
│ │ │ │ │ -28 }
│ │ │ │ │ -29
│ │ │ │ │ -30
│ │ │ │ │ -32 template
│ │ │ │ │ -_3_3 void _i_n_t_e_r_p_o_l_a_t_e (const F& f, std::vector& out) const
│ │ │ │ │ -34 {
│ │ │ │ │ -35 typename LB::Traits::DomainType x;
│ │ │ │ │ -36
│ │ │ │ │ -37 const int size = 1<
│ │ │ │ │ +9
│ │ │ │ │ +10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ │ +11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ +14
│ │ │ │ │ +15namespace _D_u_n_e
│ │ │ │ │ +16{
│ │ │ │ │ +25 template
│ │ │ │ │ +_2_6 class _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +27 {
│ │ │ │ │ +28
│ │ │ │ │ +29 public:
│ │ │ │ │ +30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s<
│ │ │ │ │ +31 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>,
│ │ │ │ │ +32 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s,
│ │ │ │ │ +_3_3 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s;
│ │ │ │ │ +34
│ │ │ │ │ +_3_6 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t ()
│ │ │ │ │ +37 {}
│ │ │ │ │ 38
│ │ │ │ │ -39 // compute Q1 interpolation coefficients
│ │ │ │ │ -40 Dune::FieldVector q1Coefficients;
│ │ │ │ │ -41
│ │ │ │ │ -42 for (int i=0; i< (1< mat;
│ │ │ │ │ +_5_4 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e& _l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () const
│ │ │ │ │ +55 {
│ │ │ │ │ +56 return coefficients;
│ │ │ │ │ +57 }
│ │ │ │ │ 58
│ │ │ │ │ -59 for (int i=0; i sol(0);
│ │ │ │ │ -65
│ │ │ │ │ -66 mat.solve(sol,q1Coefficients);
│ │ │ │ │ -67
│ │ │ │ │ -68 // write result in out vector
│ │ │ │ │ -69 for (int i=0; i
│ │ │ │ │ -,(1< coefficients_;
│ │ │ │ │ -75 };
│ │ │ │ │ -76
│ │ │ │ │ -77}
│ │ │ │ │ -78
│ │ │ │ │ -79#endif
│ │ │ │ │ +_5_9 const typename _T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e& _l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n () const
│ │ │ │ │ +60 {
│ │ │ │ │ +61 return interpolation;
│ │ │ │ │ +62 }
│ │ │ │ │ +63
│ │ │ │ │ +_6_5 unsigned int _s_i_z_e () const
│ │ │ │ │ +66 {
│ │ │ │ │ +67 return basis.size();
│ │ │ │ │ +68 }
│ │ │ │ │ +69
│ │ │ │ │ +_7_0 static constexpr GeometryType _t_y_p_e ()
│ │ │ │ │ +71 {
│ │ │ │ │ +72 return GeometryTypes::triangle;
│ │ │ │ │ +73 }
│ │ │ │ │ +74
│ │ │ │ │ +75 private:
│ │ │ │ │ +76 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis;
│ │ │ │ │ +77 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients;
│ │ │ │ │ +78 _B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> >
│ │ │ │ │ +interpolation;
│ │ │ │ │ +79 };
│ │ │ │ │ +80}
│ │ │ │ │ +81#endif /
│ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localinterpolation.hh:22
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_s_e_t_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::
│ │ │ │ │ -RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localinterpolation.hh:25
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_:_:_i_n_t_e_r_p_o_l_a_t_e
│ │ │ │ │ -void interpolate(const F &f, std::vector< C > &out) const
│ │ │ │ │ -Local interpolation of a function.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localinterpolation.hh:33
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +Second order Brezzi-Douglas-Marini shape functions on triangles.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +const Traits::LocalCoefficientsType & localCoefficients() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:54
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s
│ │ │ │ │ +LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >,
│ │ │ │ │ +BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation<
│ │ │ │ │ +BDM2Simplex2DLocalBasis< D, R > > > Traits
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:33
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BDM2Simplex2DLocalFiniteElement()
│ │ │ │ │ +Standard constructor.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:36
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ +static constexpr GeometryType type()
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:70
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +const Traits::LocalBasisType & localBasis() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:49
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +const Traits::LocalInterpolationType & localInterpolation() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:59
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BDM2Simplex2DLocalFiniteElement(int s)
│ │ │ │ │ +Make set number s, where 0 <= s < 8.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:44
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e
│ │ │ │ │ +unsigned int size() const
│ │ │ │ │ +Number of shape functions in this finite element.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2d.hh:65
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_S_i_m_p_l_e_x_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on triangles.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s
│ │ │ │ │ +traits helper struct
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:13
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e
│ │ │ │ │ +LB LocalBasisType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:16
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e
│ │ │ │ │ +LC LocalCoefficientsType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:20
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e
│ │ │ │ │ +LI LocalInterpolationType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:24
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localbasis.hh File Reference
│ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2d.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,36 +65,36 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <array>
│ │ │ │ -
#include <numeric>
│ │ │ │ -
#include <dune/common/fvector.hh>
│ │ │ │ -
#include <dune/common/fmatrix.hh>
│ │ │ │ -
#include <dune/localfunctions/common/localbasis.hh>
│ │ │ │ +
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,25 +1,27 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -dualq1localbasis.hh File Reference
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ +brezzidouglasmarini1cube2d.hh File Reference
│ │ │ │ │ +#include
│ │ │ │ │ +#include "_._._/_c_o_m_m_o_n_/_l_o_c_a_l_f_i_n_i_t_e_e_l_e_m_e_n_t_t_r_a_i_t_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ -class _D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_<_ _D_,_ _R_,_ _d_i_m_ _>
│ │ │ │ │ - Dual Lagrange shape functions of order 1 on the reference cube. _M_o_r_e_._._.
│ │ │ │ │ +class _D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_ _>
│ │ │ │ │ + First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
│ │ │ │ │ + _M_o_r_e_._._.
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localbasis.hh Source File
│ │ │ │ +dune-localfunctions: brezzidouglasmarini1cube2d.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,171 +70,123 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH
│ │ │ │ -
6#define DUNE_DUAL_Q1_LOCALBASIS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
11#include <dune/common/fvector.hh>
│ │ │ │ -
12#include <dune/common/fmatrix.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
28 template<
class D,
class R,
int dim>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
8#include <dune/geometry/type.hh>
│ │ │ │ +
│ │ │ │ +
10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
25 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
35 void setCoefficients(
const std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)>& coefficients)
│ │ │ │ -
│ │ │ │ -
37 coefficients_ = coefficients;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
48 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
51 std::vector<typename Traits::RangeType> q1Values(
size());
│ │ │ │ -
│ │ │ │ -
53 for (
size_t i=0; i<
size(); i++) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
57 for (
int j=0; j<dim; j++)
│ │ │ │ -
│ │ │ │ -
59 q1Values[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
65 for (
size_t i=0; i<
size(); i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
68 for (
size_t i=0; i<
size(); i++)
│ │ │ │ -
69 for (
size_t j=0; j<
size(); j++)
│ │ │ │ -
70 out[i] += coefficients_[i][j]*q1Values[j];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
70 static constexpr GeometryType
type ()
│ │ │ │ +
│ │ │ │ +
72 return GeometryTypes::quadrilateral;
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
78 std::vector<typename Traits::JacobianType>& out)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
81 std::vector<typename Traits::JacobianType> q1Jacs(
size());
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
84 for (
size_t i=0; i<
size(); i++) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
87 for (
int j=0; j<dim; j++) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
91 q1Jacs[i][0][j] = (i & (1<<j)) ? 1 : -1;
│ │ │ │ -
│ │ │ │ -
93 for (
int k=0; k<dim; k++) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
97 q1Jacs[i][0][j] *= (i & (1<<k)) ? in[k] : 1-in[k];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
107 for (
size_t i=0; i<
size(); i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
110 for (
size_t i=0; i<
size(); i++)
│ │ │ │ -
111 for (
size_t j=0; j<
size(); j++)
│ │ │ │ -
112 out[i].axpy(coefficients_[i][j],q1Jacs[j]);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
119 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ -
│ │ │ │ -
121 auto totalOrder = std::accumulate(
order.begin(),
order.end(), 0);
│ │ │ │ -
122 if (totalOrder == 0) {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
125 DUNE_THROW(NotImplemented,
"Desired derivative order is not implemented");
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
136 std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)> coefficients_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ -
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │ -
Dual Lagrange shape functions of order 1 on the reference cube.
Definition dualq1localbasis.hh:30
│ │ │ │ -
unsigned int size() const
number of shape functions
Definition dualq1localbasis.hh:41
│ │ │ │ -
unsigned int order() const
Polynomial order of the shape functions.
Definition dualq1localbasis.hh:130
│ │ │ │ -
void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<< dim)> &coefficients)
Definition dualq1localbasis.hh:35
│ │ │ │ -
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition dualq1localbasis.hh:47
│ │ │ │ -
LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
Definition dualq1localbasis.hh:33
│ │ │ │ -
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition dualq1localbasis.hh:77
│ │ │ │ -
void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition dualq1localbasis.hh:117
│ │ │ │ -
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini1cube2d.hh:27
│ │ │ │ +
const Traits::LocalBasisType & localBasis() const
Definition brezzidouglasmarini1cube2d.hh:49
│ │ │ │ +
LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >, BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation< BDM1Cube2DLocalBasis< D, R > > > Traits
Definition brezzidouglasmarini1cube2d.hh:33
│ │ │ │ +
static constexpr GeometryType type()
Definition brezzidouglasmarini1cube2d.hh:70
│ │ │ │ +
const Traits::LocalCoefficientsType & localCoefficients() const
Definition brezzidouglasmarini1cube2d.hh:54
│ │ │ │ +
unsigned int size() const
Number of shape functions in this finite element.
Definition brezzidouglasmarini1cube2d.hh:65
│ │ │ │ +
const Traits::LocalInterpolationType & localInterpolation() const
Definition brezzidouglasmarini1cube2d.hh:59
│ │ │ │ +
BDM1Cube2DLocalFiniteElement()
Standard constructor.
Definition brezzidouglasmarini1cube2d.hh:36
│ │ │ │ +
BDM1Cube2DLocalFiniteElement(int s)
Make set number s, where 0 <= s < 16.
Definition brezzidouglasmarini1cube2d.hh:44
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
│ │ │ │ +
Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
│ │ │ │ +
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ +
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
│ │ │ │ +
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
│ │ │ │ +
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,185 +1,141 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ -dualq1localbasis.hh
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ +brezzidouglasmarini1cube2d.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH
│ │ │ │ │ -6#define DUNE_DUAL_Q1_LOCALBASIS_HH
│ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ 7
│ │ │ │ │ -8#include
│ │ │ │ │ -9#include
│ │ │ │ │ -10
│ │ │ │ │ -11#include
│ │ │ │ │ -12#include
│ │ │ │ │ -13
│ │ │ │ │ -14#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_b_a_s_i_s_._h_h>
│ │ │ │ │ -15
│ │ │ │ │ -16namespace _D_u_n_e
│ │ │ │ │ -17{
│ │ │ │ │ -28 template
│ │ │ │ │ -_2_9 class _D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ -30 {
│ │ │ │ │ -31 public:
│ │ │ │ │ -32 typedef _L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_<_D_,_d_i_m_,_D_u_n_e_:_:_F_i_e_l_d_V_e_c_t_o_r_<_D_,_d_i_m_>,R,1,Dune::
│ │ │ │ │ -FieldVector,
│ │ │ │ │ -_3_3 Dune::FieldMatrix > _T_r_a_i_t_s;
│ │ │ │ │ +8#include
│ │ │ │ │ +9
│ │ │ │ │ +10#include "../common/localfiniteelementtraits.hh"
│ │ │ │ │ +11#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h"
│ │ │ │ │ +12#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h"
│ │ │ │ │ +13#include "_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h"
│ │ │ │ │ +14
│ │ │ │ │ +15namespace _D_u_n_e
│ │ │ │ │ +16{
│ │ │ │ │ +25 template
│ │ │ │ │ +_2_6 class _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +27 {
│ │ │ │ │ +28
│ │ │ │ │ +29 public:
│ │ │ │ │ +30 typedef _L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s<
│ │ │ │ │ +31 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_>,
│ │ │ │ │ +32 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s,
│ │ │ │ │ +_3_3 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > > _T_r_a_i_t_s;
│ │ │ │ │ 34
│ │ │ │ │ -_3_5 void _s_e_t_C_o_e_f_f_i_c_i_e_n_t_s(const std::array ,
│ │ │ │ │ -(1<& coefficients)
│ │ │ │ │ -36 {
│ │ │ │ │ -37 coefficients_ = coefficients;
│ │ │ │ │ -38 }
│ │ │ │ │ -39
│ │ │ │ │ -_4_1 unsigned int _s_i_z_e () const
│ │ │ │ │ -42 {
│ │ │ │ │ -43 return 1<& out) const
│ │ │ │ │ -49 {
│ │ │ │ │ -50 // compute q1 values
│ │ │ │ │ -51 std::vector q1Values(_s_i_z_e());
│ │ │ │ │ -52
│ │ │ │ │ -53 for (size_t i=0; i<_s_i_z_e(); i++) {
│ │ │ │ │ -54
│ │ │ │ │ -55 q1Values[i] = 1;
│ │ │ │ │ -56
│ │ │ │ │ -57 for (int j=0; j& out) const // return value
│ │ │ │ │ -79 {
│ │ │ │ │ -80 // compute q1 jacobians
│ │ │ │ │ -81 std::vector q1Jacs(_s_i_z_e());
│ │ │ │ │ -82
│ │ │ │ │ -83 // Loop over all shape functions
│ │ │ │ │ -84 for (size_t i=0; i<_s_i_z_e(); i++) {
│ │ │ │ │ -85
│ │ │ │ │ -86 // Loop over all coordinate directions
│ │ │ │ │ -87 for (int j=0; j& _o_r_d_e_r,
│ │ │ │ │ -118 const typename _T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e& in, // position
│ │ │ │ │ -119 std::vector& out) const // return value
│ │ │ │ │ -120 {
│ │ │ │ │ -121 auto totalOrder = std::accumulate(_o_r_d_e_r.begin(), _o_r_d_e_r.end(), 0);
│ │ │ │ │ -122 if (totalOrder == 0) {
│ │ │ │ │ -123 _e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n(in, out);
│ │ │ │ │ -124 } else {
│ │ │ │ │ -125 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
│ │ │ │ │ -126 }
│ │ │ │ │ -127 }
│ │ │ │ │ -128
│ │ │ │ │ -_1_3_0 unsigned int _o_r_d_e_r () const
│ │ │ │ │ -131 {
│ │ │ │ │ -132 return 1;
│ │ │ │ │ -133 }
│ │ │ │ │ -134
│ │ │ │ │ -135 private:
│ │ │ │ │ -136 std::array ,(1< coefficients_;
│ │ │ │ │ -137 };
│ │ │ │ │ -138}
│ │ │ │ │ -139#endif
│ │ │ │ │ +75 private:
│ │ │ │ │ +76 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> basis;
│ │ │ │ │ +77 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s coefficients;
│ │ │ │ │ +78 _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_<_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s_<_D_,_R_> > interpolation;
│ │ │ │ │ +79 };
│ │ │ │ │ +80}
│ │ │ │ │ +81#endif /
│ │ │ │ │ +/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_c_o_e_f_f_i_c_i_e_n_t_s_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_i_n_t_e_r_p_o_l_a_t_i_o_n_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s
│ │ │ │ │ -Type traits for LocalBasisVirtualInterface.
│ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:35
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_B_a_s_i_s_T_r_a_i_t_s_:_:_D_o_m_a_i_n_T_y_p_e
│ │ │ │ │ -D DomainType
│ │ │ │ │ -domain type
│ │ │ │ │ -DDeeffiinniittiioonn common/localbasis.hh:43
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ -Dual Lagrange shape functions of order 1 on the reference cube.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:30
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_s_i_z_e
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +const Traits::LocalBasisType & localBasis() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:49
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_T_r_a_i_t_s
│ │ │ │ │ +LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >,
│ │ │ │ │ +BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation<
│ │ │ │ │ +BDM1Cube2DLocalBasis< D, R > > > Traits
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:33
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_t_y_p_e
│ │ │ │ │ +static constexpr GeometryType type()
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:70
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +const Traits::LocalCoefficientsType & localCoefficients() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:54
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_s_i_z_e
│ │ │ │ │ unsigned int size() const
│ │ │ │ │ -number of shape functions
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:41
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_o_r_d_e_r
│ │ │ │ │ -unsigned int order() const
│ │ │ │ │ -Polynomial order of the shape functions.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:130
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_s_e_t_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<<
│ │ │ │ │ -dim)> &coefficients)
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:35
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_F_u_n_c_t_i_o_n
│ │ │ │ │ -void evaluateFunction(const typename Traits::DomainType &in, std::vector<
│ │ │ │ │ -typename Traits::RangeType > &out) const
│ │ │ │ │ -Evaluate all shape functions.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:47
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_T_r_a_i_t_s
│ │ │ │ │ -LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<
│ │ │ │ │ -R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:33
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_e_v_a_l_u_a_t_e_J_a_c_o_b_i_a_n
│ │ │ │ │ -void evaluateJacobian(const typename Traits::DomainType &in, std::vector<
│ │ │ │ │ -typename Traits::JacobianType > &out) const
│ │ │ │ │ -Evaluate Jacobian of all shape functions.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:77
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_B_a_s_i_s_:_:_p_a_r_t_i_a_l
│ │ │ │ │ -void partial(const std::array< unsigned int, dim > &order, const typename
│ │ │ │ │ -Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
│ │ │ │ │ -Evaluate partial derivatives of all shape functions.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localbasis.hh:117
│ │ │ │ │ -_l_o_c_a_l_b_a_s_i_s_._h_h
│ │ │ │ │ +Number of shape functions in this finite element.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:65
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_l_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +const Traits::LocalInterpolationType & localInterpolation() const
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:59
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BDM1Cube2DLocalFiniteElement()
│ │ │ │ │ +Standard constructor.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:36
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BDM1Cube2DLocalFiniteElement(int s)
│ │ │ │ │ +Make set number s, where 0 <= s < 16.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:44
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_B_a_s_i_s
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference
│ │ │ │ │ +quadrilateral.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalbasis.hh:30
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ +Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalcoefficients.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on the reference
│ │ │ │ │ +quadrilateral.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2dlocalinterpolation.hh:25
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s
│ │ │ │ │ +traits helper struct
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:13
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_B_a_s_i_s_T_y_p_e
│ │ │ │ │ +LB LocalBasisType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:16
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_T_y_p_e
│ │ │ │ │ +LC LocalCoefficientsType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:20
│ │ │ │ │ +_D_u_n_e_:_:_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_T_r_a_i_t_s_:_:_L_o_c_a_l_I_n_t_e_r_p_o_l_a_t_i_o_n_T_y_p_e
│ │ │ │ │ +LI LocalInterpolationType
│ │ │ │ │ +DDeeffiinniittiioonn localfiniteelementtraits.hh:24
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localcoefficients.hh File Reference
│ │ │ │ +dune-localfunctions: brezzidouglasmarinicube.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,35 +65,40 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <cstddef>
│ │ │ │ -
#include <iostream>
│ │ │ │ -
#include <vector>
│ │ │ │ -
#include <dune/localfunctions/common/localkey.hh>
│ │ │ │ +
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,24 +1,34 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -dualq1localcoefficients.hh File Reference
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include
│ │ │ │ │ -#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ +brezzidouglasmarinicube.hh File Reference
│ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h>
│ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h>
│ │ │ │ │ +#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h>
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _s_o_u_r_c_e_ _c_o_d_e_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ CCllaasssseess
│ │ │ │ │ -class _D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_<_ _d_i_m_ _>
│ │ │ │ │ - Layout map for dual Q1 elements. _M_o_r_e_._._.
│ │ │ │ │ +class _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>
│ │ │ │ │ + Brezzi-Douglas-Marini local finite elements for cubes with dimension 2
│ │ │ │ │ + and order 1. _M_o_r_e_._._.
│ │ │ │ │ +
│ │ │ │ │ +class _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>
│ │ │ │ │ + Brezzi-Douglas-Marini local finite elements for cubes with dimension 2
│ │ │ │ │ + and order 2. _M_o_r_e_._._.
│ │ │ │ │ +
│ │ │ │ │ +class _D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _>
│ │ │ │ │ + Brezzi-Douglas-Marini local finite elements for cubes with dimension 3
│ │ │ │ │ + and order 1. _M_o_r_e_._._.
│ │ │ │ │
│ │ │ │ │ NNaammeessppaacceess
│ │ │ │ │ namespace _D_u_n_e
│ │ │ │ │
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualq1localcoefficients.hh Source File
│ │ │ │ +dune-localfunctions: brezzidouglasmarinicube.hh Source File
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -70,79 +70,112 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
│ │ │ │ -
6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
31 for (std::size_t i=0; i<(1<<dim); i++)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
48 std::vector<LocalKey> li;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
23 template<
class D,
class R,
unsigned int dim,
unsigned int order>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
29 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
51 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
73 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
Describe position of one degree of freedom.
Definition localkey.hh:24
│ │ │ │ -
Layout map for dual Q1 elements.
Definition dualq1localcoefficients.hh:26
│ │ │ │ -
std::size_t size() const
number of coefficients
Definition dualq1localcoefficients.hh:36
│ │ │ │ -
DualQ1LocalCoefficients()
Standard constructor.
Definition dualq1localcoefficients.hh:29
│ │ │ │ -
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition dualq1localcoefficients.hh:42
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini1cube2d.hh:27
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on hexahedron.
Definition brezzidouglasmarini1cube3d.hh:27
│ │ │ │ +
Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2cube2d.hh:27
│ │ │ │ +
Brezzi-Douglas-Marini local finite element for cubes.
Definition brezzidouglasmarinicube.hh:24
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:43
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:35
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:57
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:65
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement()
Default constructor.
Definition brezzidouglasmarinicube.hh:79
│ │ │ │ +
BrezziDouglasMariniCubeLocalFiniteElement(int s)
Constructor with a set of edge orientations.
Definition brezzidouglasmarinicube.hh:87
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,77 +1,122 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ - * _d_u_a_l_q_1
│ │ │ │ │ -dualq1localcoefficients.hh
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ +brezzidouglasmarinicube.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
│ │ │ │ │ -6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
│ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ │ 7
│ │ │ │ │ -8#include
│ │ │ │ │ -9#include
│ │ │ │ │ -10#include
│ │ │ │ │ +8#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h>
│ │ │ │ │ +9#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h>
│ │ │ │ │ +10#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_/
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h>
│ │ │ │ │ 11
│ │ │ │ │ -12#include <_d_u_n_e_/_l_o_c_a_l_f_u_n_c_t_i_o_n_s_/_c_o_m_m_o_n_/_l_o_c_a_l_k_e_y_._h_h>
│ │ │ │ │ -13
│ │ │ │ │ -14namespace _D_u_n_e
│ │ │ │ │ -15{
│ │ │ │ │ -16
│ │ │ │ │ -24 template
│ │ │ │ │ -_2_5 class _D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -26 {
│ │ │ │ │ -27 public:
│ │ │ │ │ -_2_9 _D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s () : li(1< li;
│ │ │ │ │ -49 };
│ │ │ │ │ -50
│ │ │ │ │ -51}
│ │ │ │ │ -52
│ │ │ │ │ -53#endif
│ │ │ │ │ -_l_o_c_a_l_k_e_y_._h_h
│ │ │ │ │ +12
│ │ │ │ │ +13namespace _D_u_n_e
│ │ │ │ │ +14{
│ │ │ │ │ +23 template
│ │ │ │ │ +_2_4 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t;
│ │ │ │ │ +25
│ │ │ │ │ +29 template
│ │ │ │ │ +_3_0 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +31 : public _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +32 {
│ │ │ │ │ +33 public:
│ │ │ │ │ +_3_5 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t()
│ │ │ │ │ +36 {}
│ │ │ │ │ +37
│ │ │ │ │ +_4_3 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s)
│ │ │ │ │ +44 : _B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s)
│ │ │ │ │ +45 {}
│ │ │ │ │ +46 };
│ │ │ │ │ +47
│ │ │ │ │ +51 template
│ │ │ │ │ +_5_2 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +53 : public _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +54 {
│ │ │ │ │ +55 public:
│ │ │ │ │ +_5_7 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t()
│ │ │ │ │ +58 {}
│ │ │ │ │ +59
│ │ │ │ │ +_6_5 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s)
│ │ │ │ │ +66 : _B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s)
│ │ │ │ │ +67 {}
│ │ │ │ │ +68 };
│ │ │ │ │ +69
│ │ │ │ │ +73 template
│ │ │ │ │ +_7_4 class _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +75 : public _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +76 {
│ │ │ │ │ +77 public:
│ │ │ │ │ +_7_9 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t()
│ │ │ │ │ +80 {}
│ │ │ │ │ +81
│ │ │ │ │ +_8_7 _B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(int s)
│ │ │ │ │ +88 : _B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t::_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t(s)
│ │ │ │ │ +89 {}
│ │ │ │ │ +90 };
│ │ │ │ │ +91
│ │ │ │ │ +92} // namespace Dune
│ │ │ │ │ +93
│ │ │ │ │ +94#endif // #ifndef
│ │ │ │ │ +DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_2_d_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_1_c_u_b_e_3_d_._h_h
│ │ │ │ │ +_b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_c_u_b_e_2_d_._h_h
│ │ │ │ │ _D_u_n_e
│ │ │ │ │ DDeeffiinniittiioonn bdfmcube.hh:18
│ │ │ │ │ -_D_u_n_e_:_:_L_o_c_a_l_K_e_y
│ │ │ │ │ -Describe position of one degree of freedom.
│ │ │ │ │ -DDeeffiinniittiioonn localkey.hh:24
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -Layout map for dual Q1 elements.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localcoefficients.hh:26
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_s_i_z_e
│ │ │ │ │ -std::size_t size() const
│ │ │ │ │ -number of coefficients
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localcoefficients.hh:36
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s
│ │ │ │ │ -DualQ1LocalCoefficients()
│ │ │ │ │ -Standard constructor.
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localcoefficients.hh:29
│ │ │ │ │ -_D_u_n_e_:_:_D_u_a_l_Q_1_L_o_c_a_l_C_o_e_f_f_i_c_i_e_n_t_s_:_:_l_o_c_a_l_K_e_y
│ │ │ │ │ -const LocalKey & localKey(std::size_t i) const
│ │ │ │ │ -get i'th index
│ │ │ │ │ -DDeeffiinniittiioonn dualq1localcoefficients.hh:42
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube2d.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_1_C_u_b_e_3_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +First order Brezzi-Douglas-Marini shape functions on hexahedron.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini1cube3d.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_B_D_M_2_C_u_b_e_2_D_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarini2cube2d.hh:27
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +Brezzi-Douglas-Marini local finite element for cubes.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:24
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s)
│ │ │ │ │ +Constructor with a set of edge orientations.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:43
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _1_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement()
│ │ │ │ │ +Default constructor.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:35
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement()
│ │ │ │ │ +Default constructor.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:57
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _2_,_ _2_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s)
│ │ │ │ │ +Constructor with a set of edge orientations.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:65
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement()
│ │ │ │ │ +Default constructor.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:79
│ │ │ │ │ +_D_u_n_e_:_:_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t_<_ _D_,_ _R_,_ _3_,_ _1_ _>_:_:
│ │ │ │ │ +_B_r_e_z_z_i_D_o_u_g_l_a_s_M_a_r_i_n_i_C_u_b_e_L_o_c_a_l_F_i_n_i_t_e_E_l_e_m_e_n_t
│ │ │ │ │ +BrezziDouglasMariniCubeLocalFiniteElement(int s)
│ │ │ │ │ +Constructor with a set of edge orientations.
│ │ │ │ │ +DDeeffiinniittiioonn brezzidouglasmarinicube.hh:87
│ │ │ │ │ ===============================================================================
│ │ │ │ │ Generated by _[_d_o_x_y_g_e_n_] 1.9.8
│ │ │ ├── ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html
│ │ │ │ @@ -1,15 +1,15 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -dune-localfunctions: dualpq1factory.hh File Reference
│ │ │ │ +dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ @@ -65,34 +65,37 @@
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
#include <map>
│ │ │ │ -
#include <dune/localfunctions/common/virtualinterface.hh>
│ │ │ │ -
#include <dune/localfunctions/common/virtualwrappers.hh>
│ │ │ │ -
#include <dune/localfunctions/dualmortarbasis.hh>
│ │ │ │ +
#include <array>
│ │ │ │ +
#include <bitset>
│ │ │ │ +
#include <numeric>
│ │ │ │ +
#include <vector>
│ │ │ │ +
#include <dune/common/fmatrix.hh>
│ │ │ │ +
#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │
Go to the source code of this file.
│ │ │ │
│ │ │ │ |
│ │ │ │ namespace | Dune |
│ │ │ │ |
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,22 +1,27 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d
│ │ │ │ │ _C_l_a_s_s_e_s | _N_a_m_e_s_p_a_c_e_s
│ │ │ │ │ -dualpq1factory.hh File Reference
│ │ │ │ │ -#include
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
Go to the documentation of this file.
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
│ │ │ │ -
6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
│ │ │ │ +
5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ +
6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ +
13#include <dune/common/fmatrix.hh>
│ │ │ │
│ │ │ │ -
│ │ │ │ +
15#include "../../common/localbasis.hh"
│ │ │ │
│ │ │ │ -
17template<
class D,
class R,
int dim,
bool faceDual=false>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
25 typedef std::map<Dune::GeometryType,FE*>
FEMap;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
33 typename FEMap::iterator it =
cache_.begin();
│ │ │ │ -
34 typename FEMap::iterator end =
cache_.end();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
40 static FE*
create(
const Dune::GeometryType& gt)
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
52 typename FEMap::const_iterator it =
cache_.find(gt);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
58 DUNE_THROW(Dune::NotImplemented,
"No Dual P/Q1 like local finite element available for geometry type " << gt);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
28 template<
class D,
class R>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
34 R,2,Dune::FieldVector<R,2>,
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
40 for (
size_t i=0; i<3; i++)
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
51 for (
size_t i=0; i<3; i++)
│ │ │ │ +
52 sign_[i] = s[i] ? -1.0 : 1.0;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
68 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);
│ │ │ │ +
73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];
│ │ │ │ +
76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);
│ │ │ │ +
79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in[0]*in[0] - 2.5*in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);
│ │ │ │ +
84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];
│ │ │ │ +
87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in[0]*in[0] - 30*in[1]*in[1]);
│ │ │ │ +
90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);
│ │ │ │ +
95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
97 out[7][0] = -3*in[0] + 6*in[0]*in[0];
│ │ │ │ +
98 out[7][1] = 3*in[1] - 6*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);
│ │ │ │ +
101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];
│ │ │ │ +
106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];
│ │ │ │ +
109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];
│ │ │ │ +
112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
122 std::vector<typename Traits::JacobianType>& out)
const
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ +
127 out[0][0][1] = sign_[0]*(-2*in[0]);
│ │ │ │ +
│ │ │ │ +
129 out[0][1][0] = sign_[0]*(-2*in[1]);
│ │ │ │ +
130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ +
134 out[1][0][1] = 3*in[0];
│ │ │ │ +
│ │ │ │ +
136 out[1][1][0] = 6 - 15*in[1];
│ │ │ │ +
137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ +
141 out[2][0][1] = sign_[0]*(5*in[0]);
│ │ │ │ +
│ │ │ │ +
143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ +
144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ +
149 out[3][0][1] = sign_[1]*(-2*in[0]);
│ │ │ │ +
│ │ │ │ +
151 out[3][1][0] = sign_[1]*(-2*in[1]);
│ │ │ │ +
152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ +
156 out[4][0][1] = -6 + 15*in[0];
│ │ │ │ +
│ │ │ │ +
158 out[4][1][0] = -3*in[1];
│ │ │ │ +
159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ +
163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ +
│ │ │ │ +
165 out[5][1][0] = sign_[1]*(5*in[1]);
│ │ │ │ +
166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ +
171 out[6][0][1] = sign_[2]*(4*in[0]);
│ │ │ │ +
│ │ │ │ +
173 out[6][1][0] = sign_[2]*(4*in[1]);
│ │ │ │ +
174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
177 out[7][0][0] = -3 + 12*in[0];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
181 out[7][1][1] = 3 - 12*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ +
185 out[8][0][1] = sign_[2]*(-10*in[0]);
│ │ │ │ +
│ │ │ │ +
187 out[8][1][0] = sign_[2]*(-10*in[1]);
│ │ │ │ +
188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ +
192 out[9][0][1] = -12*in[0];
│ │ │ │ +
│ │ │ │ +
194 out[9][1][0] = -12*in[1];
│ │ │ │ +
195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ +
│ │ │ │ +
197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ +
198 out[10][0][1] = -12*in[0];
│ │ │ │ +
│ │ │ │ +
200 out[10][1][0] = -12*in[1];
│ │ │ │ +
201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ +
│ │ │ │ +
203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ +
204 out[11][0][1] = -180*in[0];
│ │ │ │ +
│ │ │ │ +
206 out[11][1][0] = 180*in[1];
│ │ │ │ +
207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
213 std::vector<typename Traits::RangeType>& out)
const
│ │ │ │ +
│ │ │ │ +
215 auto totalOrder = std::accumulate(
order.begin(),
order.end(), 0);
│ │ │ │ +
216 if (totalOrder == 0) {
│ │ │ │ +
│ │ │ │ +
218 }
else if (totalOrder == 1) {
│ │ │ │ +
│ │ │ │ +
220 auto const direction = std::distance(
order.begin(), std::find(
order.begin(),
order.end(), 1));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
│ │ │ │ +
225 out[0][1] = sign_[0]*(-2*in[1]);
│ │ │ │ +
│ │ │ │ +
227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];
│ │ │ │ +
228 out[1][1] = 6 - 15*in[1];
│ │ │ │ +
│ │ │ │ +
230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
│ │ │ │ +
231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
│ │ │ │ +
│ │ │ │ +
233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
│ │ │ │ +
234 out[3][1] = sign_[1]*(-2*in[1]);
│ │ │ │ +
│ │ │ │ +
236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];
│ │ │ │ +
237 out[4][1] = -3*in[1];
│ │ │ │ +
│ │ │ │ +
239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
│ │ │ │ +
240 out[5][1] = sign_[1]*(5*in[1]);
│ │ │ │ +
│ │ │ │ +
242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
│ │ │ │ +
243 out[6][1] = sign_[2]*(4*in[1]);
│ │ │ │ +
│ │ │ │ +
245 out[7][0] = -3 + 12*in[0];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);
│ │ │ │ +
249 out[8][1] = sign_[2]*(-10*in[1]);
│ │ │ │ +
│ │ │ │ +
251 out[9][0] = 18 - 12*in[1] - 36*in[0];
│ │ │ │ +
252 out[9][1] = -12*in[1];
│ │ │ │ +
│ │ │ │ +
254 out[10][0] = 6 - 12*in[1] - 12*in[0];
│ │ │ │ +
255 out[10][1] = -12*in[1];
│ │ │ │ +
│ │ │ │ +
257 out[11][0] = 90 - 180*in[1] - 180*in[0];
│ │ │ │ +
258 out[11][1] = 180*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
261 out[0][0] = sign_[0]*(-2*in[0]);
│ │ │ │ +
262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
│ │ │ │ +
│ │ │ │ +
267 out[2][0] = sign_[0]*(5*in[0]);
│ │ │ │ +
268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
│ │ │ │ +
│ │ │ │ +
270 out[3][0] = sign_[1]*(-2*in[0]);
│ │ │ │ +
271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);
│ │ │ │ +
│ │ │ │ +
273 out[4][0] = -6 + 15*in[0];
│ │ │ │ +
274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];
│ │ │ │ +
│ │ │ │ +
276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
│ │ │ │ +
277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
│ │ │ │ +
│ │ │ │ +
279 out[6][0] = sign_[2]*(4*in[0]);
│ │ │ │ +
280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
283 out[7][1] = 3 - 12*in[1];
│ │ │ │ +
│ │ │ │ +
285 out[8][0] = sign_[2]*(-10*in[0]);
│ │ │ │ +
286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);
│ │ │ │ +
│ │ │ │ +
288 out[9][0] = -12*in[0];
│ │ │ │ +
289 out[9][1] = 6 - 12*in[0] - 12*in[1];
│ │ │ │ +
│ │ │ │ +
291 out[10][0] = -12*in[0];
│ │ │ │ +
292 out[10][1] = 18 - 12*in[0] - 36*in[1];
│ │ │ │ +
│ │ │ │ +
294 out[11][0] = -180*in[0];
│ │ │ │ +
295 out[11][1] = -90 + 180*in[0] + 180*in[1];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
298 DUNE_THROW(RangeError,
"Component out of range.");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
301 DUNE_THROW(NotImplemented,
"Desired derivative order is not implemented");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
312 std::array<R,3> sign_;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition bdfmcube.hh:18
│ │ │ │ -
traits helper struct
Definition localfiniteelementtraits.hh:13
│ │ │ │ -
virtual base class for local finite elements with functions
Definition virtualinterface.hh:225
│ │ │ │ -
class for wrapping a finite element using the virtual interface
Definition virtualwrappers.hh:240
│ │ │ │ -
The local dual p1 finite element on simplices.
Definition dualp1.hh:35
│ │ │ │ -
Definition dualpq1factory.hh:19
│ │ │ │ -
Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > DualP1
Definition dualpq1factory.hh:21
│ │ │ │ -
~DualPQ1LocalFiniteElementCache()
Definition dualpq1factory.hh:31
│ │ │ │ -
FEMap cache_
Definition dualpq1factory.hh:67
│ │ │ │ -
DualP1::Traits::LocalBasisType::Traits T
Definition dualpq1factory.hh:23
│ │ │ │ -
static FE * create(const Dune::GeometryType >)
create finite element for given GeometryType
Definition dualpq1factory.hh:40
│ │ │ │ -
FE FiniteElementType
Type of the finite elements stored in this cache.
Definition dualpq1factory.hh:29
│ │ │ │ -
const FiniteElementType & get(const Dune::GeometryType >) const
Get local finite element for given GeometryType.
Definition dualpq1factory.hh:50
│ │ │ │ -
Dune::LocalFiniteElementVirtualInterface< T > FE
Definition dualpq1factory.hh:24
│ │ │ │ -
std::map< Dune::GeometryType, FE * > FEMap
Definition dualpq1factory.hh:25
│ │ │ │ -
Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > DualQ1
Definition dualpq1factory.hh:22
│ │ │ │ -
The local dual Q1 finite element on cubes.
Definition dualq1.hh:42
│ │ │ │ +
First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
│ │ │ │ +
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:121
│ │ │ │ +
BDM2Simplex2DLocalBasis(std::bitset< 3 > s)
Make set number s, where 0 <= s < 8.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:49
│ │ │ │ +
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:211
│ │ │ │ +
unsigned int size() const
number of shape functions
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:56
│ │ │ │ +
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:35
│ │ │ │ +
BDM2Simplex2DLocalBasis()
Standard constructor.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:38
│ │ │ │ +
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:67
│ │ │ │ +
unsigned int order() const
Polynomial order of the shape functions.
Definition brezzidouglasmarini2simplex2dlocalbasis.hh:306
│ │ │ │ +
Type traits for LocalBasisVirtualInterface.
Definition common/localbasis.hh:35
│ │ │ │ +
D DomainType
domain type
Definition common/localbasis.hh:43
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -1,137 +1,348 @@
│ │ │ │ │ dune-localfunctions 2.10
│ │ │ │ │ Loading...
│ │ │ │ │ Searching...
│ │ │ │ │ No Matches
│ │ │ │ │ * _d_u_n_e
│ │ │ │ │ * _l_o_c_a_l_f_u_n_c_t_i_o_n_s
│ │ │ │ │ - * _d_u_a_l_m_o_r_t_a_r_b_a_s_i_s
│ │ │ │ │ -dualpq1factory.hh
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i
│ │ │ │ │ + * _b_r_e_z_z_i_d_o_u_g_l_a_s_m_a_r_i_n_i_2_s_i_m_p_l_e_x_2_d
│ │ │ │ │ +brezzidouglasmarini2simplex2dlocalbasis.hh
│ │ │ │ │ _G_o_ _t_o_ _t_h_e_ _d_o_c_u_m_e_n_t_a_t_i_o_n_ _o_f_ _t_h_i_s_ _f_i_l_e_.
│ │ │ │ │ 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
│ │ │ │ │ 2// vi: set et ts=4 sw=2 sts=2:
│ │ │ │ │ 3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file
│ │ │ │ │ LICENSE.md in module root
│ │ │ │ │ 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
│ │ │ │ │ -5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
│ │ │ │ │ -6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
│ │ │ │ │ +5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ │ +6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
│ │ │ │ │ 7
│ │ │ │ │ -8#include