an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 # ifndef _RHEOLEF_TEST_H
2 # define _RHEOLEF_TEST_H
76 #include "rheolef/space.h"
77 #include "rheolef/fem_on_pointset.h"
78 #include "rheolef/band.h"
79 #include "rheolef/piola_util.h"
80 #include "rheolef/vf_tag.h"
87 template <
class T,
class M,
class VfTag>
class test_component;
92 template <
class T,
class M>
125 const band_basic<float_type,memory_type>&
gh,
135 template<
class Value, diff_type Diff>
140 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const;
142 template<
class Value, diff_type Diff>
148 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const;
150 template<
class Value>
155 <<
"-valued one is expected in expression");
157 template<
class Value>
161 check_macro (
_V.valued_tag() == arg_valued_tag,
"grad(): unexpected "<<
_V.valued()
163 <<
"-valued one is expected in expression");
165 template<
class Value>
169 check_macro (
_V.valued_tag() == arg_valued_tag,
"div(): unexpected "<<
_V.valued()
171 <<
"-valued one is expected in expression");
173 template<
class Value>
177 template<
class Value>
183 const Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& value0,
184 const Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& value1,
185 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const;
206 template <
class T,
class M,
class VfTag>
261 template<
class Value, diff_type Diff>
266 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const
267 {
base::data().template evaluate<Value,Diff> (omega_K, K, gopt,
value); }
269 template<
class Value, diff_type Diff>
275 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value,
276 bool do_local_component_assembly_unused)
const
277 {
base::data().template evaluate_on_side<Value,Diff> (omega_K, K, sid, gopt,
value); }
280 template<
class Value>
284 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const
287 base::data().template evaluate<Value,details::differentiate_option::none> (omega_K, K, none,
value);
289 template<
class Value>
294 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value,
295 bool do_local_component_assembly_unused)
const
298 base::data().template evaluate_on_side<Value,details::differentiate_option::none> (omega_K, K, sid, none,
value);
300 template<
class Value>
302 template<
class Value>
304 template<
class Value>
306 template<
class Value>
309 template<
class Value>
315 const Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& value0,
316 const Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>& value1,
317 Eigen::Matrix<Value,Eigen::Dynamic,Eigen::Dynamic>&
value)
const
318 {
base::data().local_dg_merge_on_side (omega_K, S, K0, K1, value0, value1,
value); }
324 typedef test_basic<Float,rheo_default_memory_model,details::vf_tag_01>
test;
327 typedef test_basic<Float,rheo_default_memory_model,details::vf_tag_10>
trial;
void _element_initialize(const geo_element &K) const
space_constant::valued_type valued_tag() const
void evaluate(const geo_basic< T, M > &omega_K, const geo_element &K, const details::differentiate_option &gopt, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
geo_basic< float_type, M > geo_type
field gh(Float epsilon, Float t, const field &uh, const test &v)
void local_dg_merge_on_side(const geo_basic< T, M > &omega_K, const geo_element &S, const geo_element &K0, const geo_element &K1, const Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value0, const Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value1, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
details::differentiate_option::type diff_type
void evaluate_on_side(const geo_basic< T, M > &omega_K, const geo_element &K, const side_information_type &sid, const details::differentiate_option &gopt, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
void grad_valued_check() const
test_rep(const space_type &V)
void valued_check() const
void curl_valued_check() const
see the geo_element page for the full documentation
helper for generic field value_type: T, point_basic<T> or tensor_basic<T>
rep::memory_type memory_type
test_basic< Float, rheo_default_memory_model, details::vf_tag_10 > trial
test_basic< Float, rheo_default_memory_model, details::vf_tag_01 > test
void evaluate_on_side(const geo_basic< T, M > &omega_K, const geo_element &K, const side_information_type &sid, const details::differentiate_option &gopt, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value, bool do_local_component_assembly_unused) const
void evaluate(const geo_basic< T, M > &omega_K, const geo_element &K, const details::differentiate_option &gopt, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
void valued_check() const
size_type n_derivative() const
void curl_valued_check() const
rep::space_type space_type
test_basic< T, M, VfTag > self_type
see the reference_element page for the full documentation
see the smart_pointer page for the full documentation
space_basic< float_type, M > space_type
see the integrate_option page for the full documentation
void _element_initialize_on_side(const geo_element &K, const side_information_type &sid)
void evaluate_on_side(const geo_basic< T, M > &omega_K, const geo_element &K, const side_information_type &sid, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value, bool do_local_component_assembly_unused) const
void initialize(const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
rep::scalar_type scalar_type
bool _is_inside_on_local_sides
test_basic(const space_type &V)
void evaluate(const geo_basic< T, M > &omega_K, const geo_element &K, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
void grad_valued_check() const
static const space_constant::valued_type valued_hint
const space_type & get_vf_space() const
details::test_component< T, M, VfTag > operator[](size_type i_comp) const
const std::string & valued_name(valued_type valued_tag)
This file is part of Rheolef.
void initialize(const space_basic< float_type, memory_type > &Xh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
static const space_constant::valued_type valued_hint
void _evaluate_init(const reference_element &hat_K) const
rep::value_type value_type
test_rep< T, M > & operator=(const test_rep< T, M > &)
fem_on_pointset< float_type > _fops
band_basic< float_type, M > _gh
float_traits< T >::type float_type
smart_pointer< rep > base
space_constant::valued_type valued_tag() const
void initialize(const band_basic< float_type, memory_type > &gh, const piola_on_pointset< float_type > &pops, const integrate_option &iopt) const
undeterminated_basic< T > value_type
field::size_type size_type
test_basic< T, M, vf_dual_tag_type > dual_self_type
rep::float_type float_type
const space_type & get_vf_space() const
void local_dg_merge_on_side(const geo_basic< T, M > &omega_K, const geo_element &S, const geo_element &K0, const geo_element &K1, const Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value0, const Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value1, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &value) const
details::dual_vf_tag< VfTag >::type vf_dual_tag_type
size_type n_derivative() const
void div_valued_check() const
void div_valued_check() const