1#ifndef _RHEOLEF_EQUISPACED_ICC
2#define _RHEOLEF_EQUISPACED_ICC
30#include "rheolef/reference_element.h"
32#include "rheolef/compiler_eigen.h"
50trace_macro(
"hat_K="<<hat_K.
name()<<
": order_in="<<order_in<<
", internal="<<internal);
56trace_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;
86 size_t first = internal;
87 size_t last = (order >= internal) ? order-internal : 0;
88trace_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++) {
100trace_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++) {
108 hat_xnod [loc_idof] =
point_basic<T> ((
T(
int(i)))/
T(
int(order)),
T(
int(j))/
T(
int(order)));
109trace_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++) {
117 hat_xnod [loc_idof] =
point_basic<T> (-1+2*(
T(
int(i)))/
T(
int(order)), -1+2*
T(
int(j))/
T(
int(order)));
118trace_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++) {
128 hat_xnod [loc_idof] =
point_basic<T> ((
T(
int(i)))/
T(
int(order)),
T(
int(j))/
T(
int(order)),
T(
int(k))/
T(
int(order)));
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++) {
138 hat_xnod [loc_idof] =
point_basic<T> ((
T(
int(i)))/
T(
int(order)),
T(
int(j))/
T(
int(order)), -1+2*
T(
int(k))/
T(
int(order)));
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++) {
148 hat_xnod [loc_idof] =
point_basic<T> (-1+2*(
T(
int(i)))/
T(
int(order)), -1+2*
T(
int(j))/
T(
int(order)), -1+2*
T(
int(k))/
T(
int(order)));
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
#define trace_macro(message)
#define error_macro(message)
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 reference_element_barycenter(reference_element hat_K, point_basic< T > &c)
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)