an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_INV_PIOLA_H
2 #define _RHEOLEF_INV_PIOLA_H
28 #include "rheolef/geo.h"
29 #include "rheolef/piola_util.h"
54 std::vector<value_type>
node;
56 mutable Eigen::Matrix<float_type,Eigen::Dynamic,1>
value;
57 mutable Eigen::Matrix<value_type,Eigen::Dynamic,1>
grad_value;
78 dim = omega.dimension();
79 b = omega.get_piola_basis();
83 for (
size_t loc_inod = 0, loc_nnod = node.size(); loc_inod < loc_nnod; ++loc_inod) {
84 node[loc_inod] = omega.dis_node (
dis_inod[loc_inod]);
90 switch (hat_K.variant()) {
103 b.evaluate (hat_K, hat_x,
value);
105 for (
size_t loc_inod = 0, loc_nnod = node.size(); loc_inod < loc_nnod; ++loc_inod) {
106 r = r +
value[loc_inod]*node[loc_inod];
113 b.grad_evaluate (hat_K, hat_x, grad_value);
115 for (
size_t loc_inod = 0, loc_nnod = node.size(); loc_inod < loc_nnod; ++loc_inod) {
143 return DF.trans_mult(r);
147 #endif // _RHEOLEF_PIOLA_H
static const variant_type e
value_type::size_type size_type
static const variant_type H
value_type derivative_solve(const value_type &r) const
rheolef::std enable_if ::type dot const Expr1 expr1, const Expr2 expr2 dot(const Expr1 &expr1, const Expr2 &expr2)
dot(x,y): see the expression page for the full documentation
void reset(const geo_basic< T, M > &omega, const reference_element &hat_K, const std::vector< size_t > &dis_inod)
Eigen::Matrix< value_type, Eigen::Dynamic, 1 > grad_value
static const variant_type T
typename float_traits< value_type >::type float_type
float_type dual_space_norm(const value_type &r) const
T norm(const vec< T, M > &x)
norm(x): see the expression page for the full documentation
value_type initial() const
void update_derivative(const value_type &hat_xh) const
see the reference_element page for the full documentation
float_type space_norm(const value_type &hat_xh) const
Eigen::Matrix< float_type, Eigen::Dynamic, 1 > value
value_type residue(const value_type &hat_xh) const
This file is part of Rheolef.
void dis_inod(const basis_basic< T > &b, const geo_size &gs, const geo_element &K, typename std::vector< size_type >::iterator dis_inod_tab)
value_type derivative_trans_mult(const value_type &r) const
size_type dimension() const
static const variant_type q
static const variant_type P
std::vector< value_type > node
point_basic< T > value_type
float_type duality_product(const value_type &r, const value_type &s) const
void cumul_otimes(tensor_basic< T > &t, const point_basic< T > &a, const point_basic< T > &b, size_t na, size_t nb)
tensor_basic< T > pseudo_inverse_jacobian_piola_transformation(const tensor_basic< T > &DF, size_t d, size_t map_d)
static const variant_type t
void set_x(const value_type &x1)