an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_FIELD_EXPR_TERMINAL_H
2 #define _RHEOLEF_FIELD_EXPR_TERMINAL_H
41 #include "rheolef/field.h"
42 #include "rheolef/field_component.h"
43 #include "rheolef/field_expr_utilities.h"
44 #include "rheolef/expression.h"
45 #include "rheolef/form.h"
46 #include "rheolef/basis_on_pointset.h"
47 #include "rheolef/test.h"
48 #include "rheolef/characteristic.h"
61 template <
class T>
struct is_field : std::false_type {};
76 is_field_expr_v2_constant<Expr>::value>
::type> : std::true_type {};
78 is_field_convertible<Expr>::value>
::type> : std::true_type {};
87 is_field_expr_v2_constant<Expr>::value>
::type> : std::true_type {};
89 is_field_convertible<Expr>::value>
::type> : std::true_type {};
94 template <
class Expr,
class Sfinae =
void>
103 template<
class T,
class M>
154 template<
class Function>
157 <typename float_traits<typename details::function_traits<Function>::result_type>::type>
197 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const
202 value.resize (loc_nnod);
203 for (
size_type loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
212 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const
216 template<
class Value>
228 Eigen::Matrix<scalar_type,Eigen::Dynamic,1>
231 Eigen::Matrix<point_basic<scalar_type>,Eigen::Dynamic,1>
234 Eigen::Matrix<tensor_basic<scalar_type>,Eigen::Dynamic,1>
237 Eigen::Matrix<tensor3_basic<scalar_type>,Eigen::Dynamic,1>
240 Eigen::Matrix<tensor4_basic<scalar_type>,Eigen::Dynamic,1>
244 template<
class Function>
256 template<
class Function>
278 template<
class TrueFunction,
279 class Sfinae =
typename std::enable_if<std::is_function<TrueFunction>::value, TrueFunction>
::type>
283 template <
class Constant,
284 class Sfinae =
typename std::enable_if <is_field_expr_v2_constant<Constant>::value, Constant>
::type>
306 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const
313 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const
316 template<
class Value>
318 return base::data().template valued_check<Value>(); }
323 typename
std::enable_if<
324 is_field_function<F>::value
326 > : std::true_type {};
329 template <
class Expr>
331 typename
std::enable_if<
332 is_field_function<Expr>::value
339 template <
class Expr>
341 typename
std::enable_if<
342 is_field_expr_v2_constant<Expr>::value
357 fatal_macro (
"special normal() class-function should not be directly evaluated");
400 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
406 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
408 void evaluate_internal(
412 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
414 template<
class Value>
438 details::field_expr_v2_nonlinear_terminal_function <details::normal_pseudo_function<Float> >
441 return normal_basic<Float>();
452 fatal_macro (
"special h_local() class-function should not be directly evaluated");
496 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
502 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
504 template<
class Value>
517 details::field_expr_v2_nonlinear_terminal_function <details::h_local_pseudo_function<T> >
526 details::field_expr_v2_nonlinear_terminal_function <details::h_local_pseudo_function<Float> >
529 return h_local_basic<Float>();
540 fatal_macro (
"special penalty() class-function should not be directly evaluated");
584 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
590 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
592 template<
class Value>
604 void evaluate_internal(
608 Eigen::Matrix<result_type,Eigen::Dynamic,1>&
value)
const;
616 details::field_expr_v2_nonlinear_terminal_function <details::penalty_pseudo_function<T> >
625 details::field_expr_v2_nonlinear_terminal_function <details::penalty_pseudo_function<Float> >
628 return penalty_basic<Float>();
638 template<
class T,
class M, details::differentiate_option::type Diff>
656 template <
class Expr,
657 class Sfinae =
typename std::enable_if<details::is_field_convertible<Expr>::value>
::type>
665 Vh =
_uh.get_space();
691 template<
class Value>
695 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const;
697 template<
class Value>
702 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const;
704 template<
class Value>
721 Eigen::Matrix<T,Eigen::Dynamic,1>
724 Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>
727 Eigen::Matrix<tensor_basic<T>,Eigen::Dynamic,1>
730 Eigen::Matrix<tensor3_basic<T>,Eigen::Dynamic,1>
733 Eigen::Matrix<tensor4_basic<T>,Eigen::Dynamic,1>
737 template<
class T,
class M, details::differentiate_option::type Diff>
738 template <
class Expr,
class Sfinae>
743 _u_test(_uh.get_space()),
746 _have_dg_on_sides(false),
748 _piola_on_geo_basis(),
750 _need_vector_piola(false),
760 !
_uh.get_space().get_constitution().is_hierarchical();
762 template<
class T,
class M, details::differentiate_option::type Diff>
763 template<
class Value>
775 "unexpected "<< _uh.valued()
777 <<
"-valued one is expected in expression");
782 base::_fops.template grad_valued_check<Value>();
788 base::_fops.template div_valued_check<Value>();
794 base::_fops.template curl_valued_check<Value>();
800 template<
class T,
class M, details::differentiate_option::type Diff>
819 template <
class Expr,
820 class Sfinae =
typename std::enable_if<details::is_field_convertible<Expr>::value>
::type>
829 return base::data().have_homogeneous_space (Vh); }
853 template<
class Value>
857 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const
860 template<
class Value>
865 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const
868 template<
class Value>
870 return base::data().template valued_check<Value>();
874 template<
class T,
class M, details::differentiate_option::type Diff>
881 template<
class T,
class M>
885 template <
class Expr>
887 typename
std::enable_if<
888 is_field_convertible<Expr>::value
892 typedef typename Expr::scalar_type
T;
893 typedef typename Expr::memory_type
M;
906 typename Expr::scalar_type
907 ,
typename Expr::memory_type
913 typedef typename Expr::scalar_type
T;
914 typedef typename Expr::memory_type
M;
922 details::is_field_convertible<Expr>::value
923 ,details::field_expr_v2_nonlinear_terminal_field<
924 typename Expr::scalar_type
925 ,
typename Expr::memory_type
931 typedef typename Expr::scalar_type
T;
932 typedef typename Expr::memory_type
M;
942 details::is_field_convertible<Expr>::value
943 ,details::field_expr_v2_nonlinear_terminal_field<
944 typename Expr::scalar_type
945 ,
typename Expr::memory_type
951 typedef typename Expr::scalar_type
T;
952 typedef typename Expr::memory_type
M;
962 details::is_field_convertible<Expr>::value
963 ,details::field_expr_v2_nonlinear_terminal_field<
964 typename Expr::scalar_type
965 ,
typename Expr::memory_type
971 typedef typename Expr::scalar_type
T;
972 typedef typename Expr::memory_type
M;
982 details::is_field_convertible<Expr>::value
983 ,details::field_expr_v2_nonlinear_terminal_field<
984 typename Expr::scalar_type
985 ,
typename Expr::memory_type
991 typedef typename Expr::scalar_type
T;
992 typedef typename Expr::memory_type
M;
1003 details::is_field_convertible<Expr>::value
1004 ,details::field_expr_v2_nonlinear_terminal_field<
1005 typename Expr::scalar_type
1006 ,
typename Expr::memory_type
1012 typedef typename Expr::scalar_type
T;
1013 typedef typename Expr::memory_type
M;
1020 template<
class Expr>
1024 details::is_field_convertible<Expr>::value
1025 ,details::field_expr_v2_nonlinear_terminal_field<
1026 typename Expr::scalar_type
1027 ,
typename Expr::memory_type
1033 typedef typename Expr::scalar_type
T;
1034 typedef typename Expr::memory_type
M;
1038 template<
class Expr>
1042 details::is_field_convertible<Expr>::value
1043 ,details::field_expr_v2_nonlinear_terminal_field<
1044 typename Expr::scalar_type
1045 ,
typename Expr::memory_type
1051 typedef typename Expr::scalar_type
T;
1052 typedef typename Expr::memory_type
M;
1058 template<
class Expr>
1062 details::is_field_convertible<Expr>::value
1063 ,details::field_expr_v2_nonlinear_terminal_field<
1064 typename Expr::scalar_type
1065 ,
typename Expr::memory_type
1071 typedef typename Expr::scalar_type
T;
1072 typedef typename Expr::memory_type
M;
1078 template<
class Expr>
1082 details::is_field_convertible<Expr>::value
1083 ,details::field_expr_v2_nonlinear_terminal_field<
1084 typename Expr::scalar_type
1085 ,
typename Expr::memory_type
1091 typedef typename Expr::scalar_type
T;
1092 typedef typename Expr::memory_type
M;
1103 template<
class T,
class M>
1117 template <
class Expr,
1118 class Sfinae =
typename std::enable_if<details::is_field_convertible<Expr>::value>
::type>
1139 template<
class Value>
1143 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const;
1145 template<
class Value>
1152 <<
"-valued one is expected in expression");
1161 template<
class T,
class M>
1179 template <
class Expr,
1180 class Sfinae =
typename std::enable_if<details::is_field_convertible<Expr>::value>
::type>
1182 :
base(new_macro(
rep(expr,c0,c1))) {}
1197 {
base::data().initialize (Xh, pops, iopt); }
1199 template<
class Value>
1203 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const
1206 template<
class Value>
1208 {
return base::data().template valued_check<Value>(); }
1214 #define _RHEOLEF_make_field_expr_v2_nonlinear_terminal_field_dg(op,c0,c1) \
1215 template<class Expr> \
1219 details::is_field_convertible<Expr>::value \
1220 ,details::field_expr_v2_nonlinear_terminal_field_dg< \
1221 typename Expr::scalar_type \
1222 ,typename Expr::memory_type \
1225 op (const Expr& expr) \
1227 return details::field_expr_v2_nonlinear_terminal_field_dg \
1228 <typename Expr::scalar_type ,typename Expr::memory_type> \
1236 #undef _RHEOLEF_make_field_expr_v2_nonlinear_terminal_field_dg
1244 template<
class T,
class M>
1276 template<
class Value>
1280 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const;
1282 template<
class Value>
1287 "unexpected "<<
_uh.valued()
1289 <<
"-valued one is expected in expression");
1294 template<
class Result>
1308 template<
class T,
class M>
1323 template<
class T,
class M>
1326 : _uh (uoX.get_field()),
1327 _X (uoX.get_characteristic()),
1338 template<
class T,
class M>
1340 public smart_pointer<field_expr_v2_nonlinear_terminal_field_o_characteristic_rep<T,M> >
1358 :
base(new_macro(
rep(uoX))) {}
1361 :
base(new_macro(
rep(uh,X))) {}
1376 {
base::data().initialize (Xh, pops, iopt); }
1378 template<
class Value>
1382 Eigen::Matrix<Value,Eigen::Dynamic,1>&
value)
const
1385 template<
class Value>
1387 return base::data().template valued_check<Value>();
1395 template<
class T,
class M>
1404 #endif // _RHEOLEF_FIELD_EXPR_TERMINAL_H
basis_on_pointset< T > _piola_on_geo_basis
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
space_constant::valued_type valued_tag() const
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
field_expr_v2_nonlinear_terminal_field< T, M, details::differentiate_option::none > _expr0
disarray< tensor4_basic< T >, M > _tensor4_val
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::divergence >>::type div(const Expr &expr)
div(uh): see the expression page for the full documentation
penalty_pseudo_function< T > function_type
geo_element::size_type size_type
bool valued_check() const
details::function_traits< Function >::copiable_type function_type
space_constant::valued_type valued_tag() const
#define rheo_default_memory_model
static const space_constant::valued_type valued_hint
void evaluate_on_side(const geo_basic< float_type, memory_type > &omega_L, const geo_element &L, const side_information_type &sid, Eigen::Matrix< result_type, Eigen::Dynamic, 1 > &value) const
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type Ds(const Expr &expr)
Ds(uh): see the expression page for the full documentation.
field_expr_v2_nonlinear_terminal_function_base_rep()
field_expr_v2_nonlinear_terminal_field_o_characteristic(const field_basic< T, M > &uh, const characteristic_basic< T, M > &X)
smart_pointer< rep > base
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
details::field_expr_v2_nonlinear_terminal_function< details::normal_pseudo_function< Float > > normal()
normal: see the expression page for the full documentation
space_constant::valued_type valued_tag() const
_RHEOLEF_make_field_expr_v2_nonlinear_terminal_field_dg(jump, 1, -1) _RHEOLEF_make_field_expr_v2_nonlinear_terminal_field_dg(average
field_expr_v2_nonlinear_terminal_field_dg_rep< T, M > rep
space_constant::valued_type valued_tag() const
field_expr_v2_nonlinear_terminal_field_dg_rep(const Expr &expr, const float_type &c0, const float_type &c1)
bool valued_check() const
geo_element::size_type size_type
space_constant::valued_type valued_tag() const
point_basic< T > argument_type
field_expr_v2_nonlinear_terminal_field_o_characteristic_rep(const field_o_characteristic< T, M > &uoX)
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
rep::scalar_type scalar_type
typename rep::value_type value_type
details::field_expr_v2_nonlinear_terminal_function< details::h_local_pseudo_function< Float > > h_local()
h_local: see the expression page for the full documentation
normal_pseudo_function< T > function_type
typename rep::size_type size_type
bool valued_check() const
field_expr_v2_nonlinear_terminal_function_rep(const Function &f)
rep::scalar_type scalar_type
field_expr_v2_nonlinear_terminal_field_dg(const Expr &expr, const float_type &c0, const float_type &c1)
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
differentiate_option _gopt
see the geo_element page for the full documentation
rep::float_type float_type
std::array< Eigen::Matrix< tensor4_basic< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor4_val
geo_element::size_type size_type
static const space_constant::valued_type valued_hint
rheo_default_memory_model memory_type
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type grad(const Expr &expr)
grad(uh): see the expression page for the full documentation
bool valued_check() const
helper for generic field value_type: T, point_basic<T> or tensor_basic<T>
rep::memory_type memory_type
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
geo_element::size_type size_type
variant_type variant() const
const field_basic< T, M > & expr() const
bool valued_check() const
geo_element::size_type size_type
rheo_default_memory_model memory_type
typename rep::memory_type memory_type
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
void initialize(const piola_on_pointset< T > &pops, const integrate_option &iopt) const
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::divergence >>::type div_h(const Expr &expr)
div_h(uh): see the expression page for the full documentation
disarray< point_basic< T >, M > _vector_val
typename rep::float_type float_type
details::field_expr_v2_nonlinear_terminal_function< details::normal_pseudo_function< T > > normal_basic()
bool have_homogeneous_space(space_basic< scalar_type, memory_type > &Vh) const
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
geo_element::size_type size_type
rep::value_type value_type
rheo_default_memory_model memory_type
std::array< Eigen::Matrix< tensor_basic< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor_val
field_expr_v2_nonlinear_terminal_field_o_characteristic(const field_o_characteristic< T, M > &uoX)
rep::result_type result_type
smart_pointer< rep > base
static const space_constant::valued_type valued_hint
disarray< tensor_basic< T >, M > _tensor_val
disarray< tensor3_basic< T >, M > _tensor3_val
see the reference_element page for the full documentation
see the smart_pointer page for the full documentation
field_expr_v2_nonlinear_terminal_function_rep< Function > rep
see the integrate_option page for the full documentation
field_expr_v2_nonlinear_terminal_function(const Constant &c)
field_expr_v2_nonlinear_terminal_field_o_characteristic_rep< T, M > rep
field_expr_v2_nonlinear_terminal_field< T, M, details::differentiate_option::none > type
disarray< T, M > _scalar_val
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type Dh(const Expr &expr)
Dh(uh): see the expression page for the full documentation.
h_local_pseudo_function< T > function_type
test_basic< T, M, details::vf_tag_01 > _u_test
space_constant::valued_type valued_tag() const
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< result_type, Eigen::Dynamic, 1 > &value) const
rep::memory_type memory_type
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
float_traits< T >::type float_type
static const space_constant::valued_type valued_hint
reference_element::size_type size_type
space_constant::valued_type valued_tag() const
field_expr_v2_nonlinear_terminal_function_base_rep< T > base
field_expr_v2_nonlinear_terminal_function< fun_t > type
float_traits< T >::type float_type
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
rep::argument_type argument_type
bool valued_check() const
std::array< Eigen::Matrix< tensor3_basic< scalar_type >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor3_val
field_expr_v2_nonlinear_terminal_function< Expr > type
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
geo_element::size_type size_type
bool valued_check() const
void evaluate_on_side(const geo_basic< float_type, memory_type > &omega_L, const geo_element &L, const side_information_type &sid, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type grad_s(const Expr &expr)
grad_s(uh): see the expression page for the full documentation
bool have_homogeneous_space(space_basic< scalar_type, memory_type > &Vh) const
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< result_type, Eigen::Dynamic, 1 > &value) const
details::function_traits< Function >::template arg< 0 >::type argument_type
rep::float_type float_type
#define fatal_macro(message)
fem_on_pointset< T > _fops
rep::float_type float_type
const std::string & valued_name(valued_type valued_tag)
rep::result_type result_type
This file is part of Rheolef.
f_constant< point_basic< float_type >, Expr > fun_t
point_basic< T > result_type
T operator()(const point_basic< T > &) const
static const space_constant::valued_type valued_hint
point_basic< T > argument_type
undeterminated_basic< T > result_type
std::array< Eigen::Matrix< scalar_type, Eigen::Dynamic, 1 >,reference_element::max_variant > _scalar_val
bool valued_check() const
std::vector< size_type > _dis_inod_geo
T operator()(const point_basic< T > &) const
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::curl >>::type curl(const Expr &expr)
curl(uh): see the expression page for the full documentation
space_constant::valued_type valued_tag() const
point_basic< T > argument_type
rheo_default_memory_model memory_type
piola_on_pointset< float_type > _pops
static const space_constant::valued_type valued_hint
static const variant_type max_variant
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type D(const Expr &expr)
D(uh): see the expression page for the full documentation.
typename float_traits< T >::type float_type
typename rep::const_iterator const_iterator
rep::scalar_type scalar_type
rep::result_type result_type
static const space_constant::valued_type valued_hint
void evaluate_on_side(const geo_basic< float_type, memory_type > &omega_L, const geo_element &L, const side_information_type &sid, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
scalar_traits< result_type >::type scalar_type
details::field_expr_v2_nonlinear_node_nary< typename details::function_traits< Function >::functor_type,typename details::field_expr_v2_nonlinear_terminal_wrapper_traits< Exprs >::type... > ::type compose(const Function &f, const Exprs &... exprs)
see the compose page for the full documentation
field_expr_v2_nonlinear_terminal_function_base_rep< T > base
details::field_expr_v2_nonlinear_terminal_function< details::penalty_pseudo_function< Float > > penalty()
penalty(): see the expression page for the full documentation
bool valued_check() const
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::divergence >>::type div_s(const Expr &expr)
div_s(uh): see the expression page for the full documentation
field_expr_v2_nonlinear_terminal_function_base_rep< float_type > base
space_constant::valued_type valued_tag() const
rheo_default_memory_model memory_type
float_traits< result_type >::type float_type
std::array< Eigen::Matrix< tensor_basic< scalar_type >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor_val
std::array< Eigen::Matrix< T, Eigen::Dynamic, 1 >,reference_element::max_variant > _scalar_val
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type grad_h(const Expr &expr)
grad_h(uh): see the expression page for the full documentation
bool valued_check() const
point_basic< T > operator()(const point_basic< T > &) const
typename std::conditional< Diff==details::differentiate_option::divergence,T,undeterminated_basic< T > >::type result_type
field_expr_v2_nonlinear_terminal_function_base_rep< T > base
typename rep::result_type result_type
const geo_element & global_get_side(const geo_basic< T, M > &omega_L, const geo_element &L, const side_information_type &sid)
const geo_element & get_side(const geo_basic< float_type, M > &omega_K, const geo_element &K, const side_information_type &sid) const
const geo_basic< T, M > & get_geo() const
field_expr_v2_nonlinear_terminal_field(const Expr &expr, const differentiate_option &gopt=differentiate_option())
space_constant::valued_type valued_tag() const
details::field_expr_v2_nonlinear_terminal_function< details::penalty_pseudo_function< T > > penalty_basic()
geo_element::size_type size_type
field_expr_v2_nonlinear_terminal_field< T, M, details::differentiate_option::none > _expr1
field_expr_v2_nonlinear_terminal_function(TrueFunction f)
typename field_basic< T, M >::const_iterator const_iterator
field_expr_v2_nonlinear_terminal_field_rep(const Expr &expr, const differentiate_option &gopt)
smart_pointer< rep > base
rep::value_type value_type
typename rep::scalar_type scalar_type
static const space_constant::valued_type valued_hint
characteristic_basic< T, M > _X
std::array< Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _vector_val
void evaluate(const geo_basic< float_type, memory_type > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, 1 > &value) const
field_expr_v2_nonlinear_terminal_function(const Function &f)
details::field_expr_v2_nonlinear_terminal_function< details::h_local_pseudo_function< T > > h_local_basic()
const_iterator begin_dof() const
undeterminated_basic< T > result_type
space_constant::valued_type valued_tag() const
void evaluate_on_side(const geo_basic< float_type, memory_type > &omega_L, const geo_element &L, const side_information_type &sid, Eigen::Matrix< result_type, Eigen::Dynamic, 1 > &value) const
const geo_element & get_side(const geo_element &K, const side_information_type &sid) const
rep::memory_type memory_type
reference_element _tilde_L
std::array< Eigen::Matrix< tensor3_basic< T >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor3_val
bool valued_check() const
promote< Expr, Float >::type float_type
const_iterator begin_dof() const
std::array< Eigen::Matrix< point_basic< scalar_type >, Eigen::Dynamic, 1 >,reference_element::max_variant > _vector_val
space_constant::valued_type valued_tag() const
details::function_traits< Function >::result_type result_type
rep::value_type value_type
const Eigen::Matrix< piola< T >, Eigen::Dynamic, 1 > & get_piola(const geo_basic< T, M > &omega, const geo_element &K) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
std::array< Eigen::Matrix< tensor4_basic< scalar_type >, Eigen::Dynamic, 1 >,reference_element::max_variant > _tensor4_val