1 #ifndef _RHEOLEF_EQUISPACED_ICC
2 #define _RHEOLEF_EQUISPACED_ICC
30 #include "rheolef/reference_element.h"
32 #include "rheolef/compiler_eigen.h"
50 trace_macro(
"hat_K="<<hat_K.
name()<<
": order_in="<<order_in<<
", internal="<<
internal);
56 trace_macro(
"barycenter: hat_xnod [0]="<<hat_xnod[0]);
61 size_t order = 0, size = 0;
70 order = order_in + (
d+1)*
internal;
75 order = order_in + 2*
internal;
84 error_macro (
"unexpected element type `"<<hat_K.
name()<<
"'");
86 size_t first =
internal;
87 size_t last = (
order >=
internal) ?
order-
internal : 0;
88 trace_macro(
"hat_K="<<hat_K.
name()<<
": order="<<
order<<
", first="<<first<<
", last="<<last<<
", size="<<size);
89 hat_xnod.resize (size);
97 for (
size_type i = first; i <= last; i++) {
100 trace_macro(
"e::lattice("<<i<<
"): hat_xnod ["<<loc_idof<<
"]="<<hat_xnod [loc_idof]);
105 for (
size_type j = first; j <= last; j++) {
106 for (
size_type i = first; i+j <= last; i++) {
109 trace_macro(
"t::lattice("<<i<<
","<<j<<
"): hat_xnod ["<<loc_idof<<
"]="<<hat_xnod [loc_idof]);
114 for (
size_type j = first; j <= last; j++) {
115 for (
size_type i = first; i <= last; i++) {
118 trace_macro(
"q::lattice("<<i<<
","<<j<<
"): hat_xnod ["<<loc_idof<<
"]="<<hat_xnod [loc_idof]);
124 for (
size_type k = first; k <= last; k++) {
125 for (
size_type j = first; j+k <= last; j++) {
126 for (
size_type i = first; i+j+k <= last; i++) {
134 for (
size_type k = first; k <= last; k++) {
135 for (
size_type j = first; j <= last; j++) {
136 for (
size_type i = first; i+j <= last; i++) {
144 for (
size_type k = first; k <= last; k++) {
145 for (
size_type j = first; j <= last; j++) {
146 for (
size_type i = first; i <= last; i++) {
152 default: error_macro (
"unexpected element type `"<<hat_K.
name()<<
"'");
field::size_type size_type
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
static size_type ilat2loc_inod(size_type order, const point_basic< size_type > &ilat)
see the reference_element page for the full documentation
static const variant_type H
static const variant_type q
static const variant_type e
size_type dimension() const
static const variant_type p
variant_type variant() const
std::vector< int >::size_type size_type
static size_type n_node(variant_type variant, size_type order)
static const variant_type T
static const variant_type P
static const variant_type t
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
This file is part of Rheolef.
void pointset_lagrange_equispaced(reference_element hat_K, size_t order_in, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_xnod, size_t internal=0)
void reference_element_barycenter(reference_element hat_K, point_basic< T > &c)