* This class is a facade of all concepts implemented here, including * + Shape function * + Integration of shape functions */
| 18 | * + Integration of shape functions |
| 19 | */ |
| 20 | class FEBasis { |
| 21 | public: |
| 22 | typedef std::shared_ptr<FEBasis> Ptr; |
| 23 | typedef Material::Ptr MaterialPtr; |
| 24 | typedef ShapeFunction::Ptr ShapeFunctionPtr; |
| 25 | typedef Integrator::Ptr IntegratorPtr; |
| 26 | typedef Elements::Ptr FEMeshPtr; |
| 27 | |
| 28 | FEBasis(FEMeshPtr mesh); |
| 29 | |
| 30 | public: |
| 31 | Float evaluate_func(size_t elem_idx, |
| 32 | size_t local_func_idx, const VectorF& coord); |
| 33 | |
| 34 | VectorF evaluate_grad(size_t elem_idx, |
| 35 | size_t local_func_idx, const VectorF& coord); |
| 36 | |
| 37 | Float integrate_func_func(size_t elem_idx, |
| 38 | size_t local_func_i, size_t local_func_j); |
| 39 | |
| 40 | Float integrate_grad_grad(size_t elem_idx, |
| 41 | size_t local_func_i, size_t local_func_j); |
| 42 | |
| 43 | Float integrate_grad_C_grad(size_t elem_idx, |
| 44 | size_t local_func_i, size_t local_func_j, const MatrixF& C); |
| 45 | |
| 46 | MatrixF integrate_material_contraction(size_t elem_idx, |
| 47 | size_t local_func_i, size_t local_func_j, |
| 48 | const MaterialPtr material); |
| 49 | |
| 50 | private: |
| 51 | FEMeshPtr m_mesh; |
| 52 | ShapeFunctionPtr m_shape_func; |
| 53 | IntegratorPtr m_integrator; |
| 54 | }; |
| 55 | |
| 56 | } |