basis_fem_visu_gnuplot.cc
Go to the documentation of this file.
// file automatically generated by: ../../../rheolef/nfem/pbasis/make_basis_list_cxx.sh
#include "basis.h"
#include "equispaced.icc"
#include "basis_visu_gnuplot.icc"
#include "basis_on_pointset_evaluate.icc"
#include "rheolef/iorheo.h"
namespace rheolef {
using namespace std;
// --------------------------------------------------------------------------
// show polynomials
// --------------------------------------------------------------------------
template<class T>
void
basis_rep<T>::put (ostream& os, reference_element hat_K) const
{
switch (valued_tag()) {
case space_constant::scalar: put_scalar_valued (os, hat_K); break;
case space_constant::vector: put_vector_valued (os, hat_K); break;
default: error_macro ("unimplemented gnuplot visualization of "<<valued()<<"-valued polynomials");
}
}
template<class T>
void
basis_rep<T>::put_scalar_valued (ostream& os, reference_element hat_K) const
{
details::put(*this,os,hat_K); // shared with basis_raw
}
template<class T>
void
basis_rep<T>::put_vector_valued (ostream& os, reference_element hat_K) const
{
typedef reference_element::size_type size_type;
bool verbose = iorheo::getverbose(os);
bool clean = iorheo::getclean(os);
bool execute = iorheo::getexecute(os);
size_type nsub = iorheo::getsubdivide(os);
if (nsub <= 1) nsub = 20; // default value
size_type loc_ndof = ndof(hat_K);
string basename = "basis-" + name() + "-" + hat_K.name();
string filelist;
// --------------------
// .plot
// --------------------
string plot_name = basename + ".plot";
string gdat_name = basename + ".gdat";
ofstream plot (plot_name.c_str());
cerr << "! file \"" << plot_name << "\" created" << endl;
filelist += " \"" + plot_name + "\"";
size_t d = hat_K.dimension();
check_macro (d==1 || d==2, "unsupported dimension " << d);
plot << "gdat = \"" << gdat_name << "\"" << endl
<< "set colors classic" << endl
<< "set size square" << endl
;
// draw all edges
point_basic<T> xmin, xmax;
for (size_type mu = 0; mu < d; ++mu) {
xmin[mu] = 1;
xmax[mu] = -1;
}
for (size_type loc_isid = 0, loc_nsid = hat_K.n_subgeo(1); loc_isid < loc_nsid; ++loc_isid) {
size_type loc_ia = hat_K.subgeo_local_vertex (1, loc_isid, 0);
size_type loc_ib = hat_K.subgeo_local_vertex (1, loc_isid, 1);
const point& a = hat_K.vertex (loc_ia);
const point& b = hat_K.vertex (loc_ib);
plot << "set arrow from ";
size_type d2 = max(d,size_type(2));
for (size_type mu = 0; mu < d2; ++mu) {
plot << a[mu];
if (mu+1 != d2) plot << ", ";
xmin[mu] = min(xmin[mu],T(a[mu]));
xmax[mu] = max(xmax[mu],T(a[mu]));
}
plot << " to ";
for (size_type mu = 0; mu < d2; ++mu) {
plot << b[mu];
if (mu+1 != d2) plot << ", ";
xmin[mu] = min(xmin[mu],T(b[mu]));
xmax[mu] = max(xmax[mu],T(b[mu]));
}
plot << " nohead lc 0 lw 1" << endl;
}
T delta = 0.1;
plot << endl
<< "set xrange ["<<xmin[0]-delta<<":"<<xmax[0]+delta<<"]"<<endl;
if (d >= 2) {
plot << "set yrange ["<<xmin[1]-delta<<":"<<xmax[1]+delta<<"]"<<endl;
} else {
plot << "set yrange [-1:1]"<<endl;
}
if (d >= 3) {
plot << "set zrange ["<<xmin[2]-delta<<":"<<xmax[2]+delta<<"]"<<endl
<< "set xyplane at "<< xmin[2]-delta << endl;
}
if (d == 1) {
plot << "plot \\" << endl
;
for (size_t loc_idof = 0; loc_idof < loc_ndof; ++loc_idof) {
plot << " gdat u 1:"<<loc_idof+2 << " t \"L" << loc_idof+1 << "\" w l";
if (loc_idof+1 != loc_ndof) { plot << ",\\"; }
plot << endl;
}
} else if (d == 2) {
plot << "pause_duration = 0.5" << endl
<< "d = 2" << endl
<< "scale= 1./" << nsub << endl
<< "idx = 0" << endl
<< "idxmax = " << loc_ndof << endl
<< "plot gdat i idx u 1:2:(scale*$3):(scale*$4) t sprintf(\"P%d\",idx+1) w vec lc 0 lw 2" << endl
<< "load \"" << basename << ".loop\"" << endl
;
string loop_name = basename + ".loop";
ofstream loop (loop_name.c_str());
cerr << "! file \"" << loop_name << "\" created" << endl;
filelist += " \"" + loop_name + "\"";
loop << "idx = idx+1" << endl
<< "if (idx < idxmax) \\" << endl
<< " pause -1 \"<return>\"; \\" << endl
<< " replot; \\" << endl
<< " reread" << endl
;
}
plot << "pause -1 \"<return>\"" << endl;
plot.close();
// --------------------
// .gdat
// --------------------
ofstream gdat (gdat_name.c_str());
cerr << "! file \"" << gdat_name << "\" created" << endl;
filelist += " \"" + gdat_name + "\"";
gdat << setprecision(std::numeric_limits<T>::digits10)
<< "# basis " << name() << endl
<< "# element " << hat_K.name() << endl
<< "# degree " << degree() << endl
;
switch (hat_K.variant()) {
#ifdef TODO
case reference_element::p: {
break;
}
case reference_element::e: {
gdat << "# ndof " << loc_ndof << endl
<< "# x";
for (size_t loc_idof = 0; loc_idof < loc_ndof; ++loc_idof) {
gdat << " L" << loc_idof+1;
}
gdat << endl;
for (size_type i = 0; i <= nsub; i++) {
point_basic<T> hat_x (T(i)/T(nsub));
eval (hat_K, hat_x, value);
gdat << hat_x[0];
for (size_t loc_idof = 0, loc_ndof = value.size(); loc_idof < loc_ndof; ++loc_idof) {
for (size_t mu = 0; mu < d; ++mu) {
gdat << " " << value[loc_idof][mu];
}
}
gdat << endl;
}
break;
}
#endif // TODO
case reference_element::t:
case reference_element::q: {
Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1> hat_node;
Eigen::Matrix<point_basic<T>,Eigen::Dynamic,Eigen::Dynamic> value;
pointset_lagrange_equispaced (hat_K, nsub, hat_node);
details::basis_on_pointset_evaluate (*this, hat_K, hat_node, value);
size_t loc_nnod = value.rows();
size_t loc_ndof = value.cols();
for (size_t loc_idof = 0; loc_idof < loc_ndof; ++loc_idof) {
for (size_t loc_inod = 0; loc_inod < loc_nnod; ++loc_inod) {
for (size_t mu = 0; mu < d; ++mu) {
gdat << hat_node[loc_inod][mu] << " ";
}
for (size_t mu = 0; mu < d; ++mu) {
gdat << value(loc_inod,loc_idof)[mu] << " ";
}
gdat << endl;
}
gdat << endl << endl;
}
break;
}
#ifdef TODO
case reference_element::T: {
for (size_type k = 0; k <= nsub; k++) {
for (size_type j = 0; j+k <= nsub; j++) {
for (size_type i = 0; i+j+k <= nsub; i++) {
point_basic<T> hat_x (T(i)/T(nsub), T(j)/T(nsub), T(k)/T(nsub));
eval_lagrange (hat_x, hat_K, degree, sopt, inv_vdm, value);
Lambda = max(Lambda, norm(value,1));
}
}
}
return Lambda;
}
case reference_element::P: {
for (size_type k = 0; k <= degree; k++) {
for (size_type j = 0; j <= degree; j++) {
for (size_type i = 0; i+j <= degree; i++) {
point_basic<T> hat_x (T(i)/T(nsub), T(j)/T(nsub), 2*T(k)/T(nsub)-1);
eval_lagrange (hat_x, hat_K, degree, sopt, inv_vdm, value);
Lambda = max(Lambda, norm(value,1));
}
}
}
break;
}
case reference_element::H: {
for (size_type k = 0; k <= degree; k++) {
for (size_type j = 0; j <= degree; j++) {
for (size_type i = 0; i <= degree; i++) {
point_basic<T> hat_x (2*T(i)/T(nsub)-1, 2*T(j)/T(nsub), 2*T(k)/T(nsub)-1);
eval_lagrange (hat_x, hat_K, degree, sopt, inv_vdm, value);
Lambda = max(Lambda, norm(value,1));
}
}
}
break;
}
#endif // TODO
default:
error_macro ("unexpected element type `"<<hat_K.name()<<"'");
}
// -----------
if (execute) {
// -----------
string command = "gnuplot \"" + plot_name + "\"";
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
// -----------
if (clean) {
// -----------
string command = "/bin/rm -f " + filelist;
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
}
// --------------------------------------------------------------------------
// show nodes
// --------------------------------------------------------------------------
template<class T>
static
void
put_hat_node_header (std::ostream& plot, reference_element hat_K)
{
typedef reference_element::size_type size_type;
size_type d = hat_K.dimension();
plot << "set colors classic" << endl
<< "set nokey" << endl
<< "set noborder" << endl
<< "set noxtics" << endl
<< "set noytics" << endl
<< "set noztics" << endl
;
if (d == 2){
plot << "set size ratio -1 # 2d equal scales" << endl;
} else if (d == 3) {
plot << "set view 70, 140 # x to left, y to right, z to top" << endl;
plot << "set view equal xyz # 3d equal scales" << endl;
}
plot << endl;
// draw all edges
point_basic<T> xmin, xmax;
for (size_type mu = 0; mu < d; ++mu) {
xmin[mu] = 1;
xmax[mu] = -1;
}
for (size_type loc_isid = 0, loc_nsid = hat_K.n_subgeo(1); loc_isid < loc_nsid; ++loc_isid) {
size_type loc_ia = hat_K.subgeo_local_vertex (1, loc_isid, 0);
size_type loc_ib = hat_K.subgeo_local_vertex (1, loc_isid, 1);
const point& a = hat_K.vertex (loc_ia);
const point& b = hat_K.vertex (loc_ib);
plot << "set arrow from ";
size_type d2 = max(d,size_type(2));
for (size_type mu = 0; mu < d2; ++mu) {
plot << a[mu];
if (mu+1 != d2) plot << ", ";
xmin[mu] = min(xmin[mu],T(a[mu]));
xmax[mu] = max(xmax[mu],T(a[mu]));
}
plot << " to ";
for (size_type mu = 0; mu < d2; ++mu) {
plot << b[mu];
if (mu+1 != d2) plot << ", ";
xmin[mu] = min(xmin[mu],T(b[mu]));
xmax[mu] = max(xmax[mu],T(b[mu]));
}
plot << " nohead lc 0 lw 1" << endl;
}
T delta = 0.1;
plot << endl
<< "set xrange ["<<xmin[0]-delta<<":"<<xmax[0]+delta<<"]"<<endl;
if (d >= 2) {
plot << "set yrange ["<<xmin[1]-delta<<":"<<xmax[1]+delta<<"]"<<endl;
} else {
plot << "set yrange [-1:1]"<<endl;
}
if (d >= 3) {
plot << "set zrange ["<<xmin[2]-delta<<":"<<xmax[2]+delta<<"]"<<endl
<< "set xyplane at "<< xmin[2]-delta << endl;
}
}
template<class T>
void
basis_rep<T>::put_hat_node (std::ostream& os, reference_element hat_K) const
{
using namespace std;
bool verbose = iorheo::getverbose(os);
bool clean = iorheo::getclean(os);
bool execute = iorheo::getexecute(os);
_initialize_data_guard (hat_K);
const Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& hat_x = hat_node(hat_K);
size_type d = hat_K.dimension();
string basename = "basis-" + name() + "-" + hat_K.name();
string filelist;
// --------------------
// .gdat
// --------------------
string gdat_name = basename + ".gdat";
ofstream gdat (gdat_name.c_str());
cerr << "! file \"" << gdat_name << "\" created" << endl;
filelist += " " + gdat_name;
gdat << setprecision(std::numeric_limits<T>::digits10)
<< "# basis " << name() << endl
<< "# element " << hat_K.name() << endl
<< "# degree " << degree() << endl
<< "# ndof " << ndof(hat_K) << endl
<< "# raw_poly " << _sopt.get_raw_polynomial_name() << endl
<< "# nodeset " << _sopt.get_node_name() << endl
<< "# nnode " << hat_x.size() << endl
;
if (! option().is_restricted_to_sides()) {
for (size_type dim = 0, d = hat_K.dimension(); dim <= d; ++dim) {
for (size_type loc_inod = first_inod_by_dimension(hat_K,dim), loc_nnod = first_inod_by_dimension(hat_K,dim+1); loc_inod < loc_nnod; ++loc_inod) {
hat_x [loc_inod].put (gdat, max(d,size_type(2)));
gdat << " " << loc_inod << endl;
}
gdat << endl << endl;
}
} else {
// basis_sides has no ordered nodes by dimension and no first_inod(K,dim)
for (size_type loc_inod = 0, loc_nnod = nnod(hat_K); loc_inod < loc_nnod; ++loc_inod) {
hat_x [loc_inod].put (gdat, max(d,size_type(2)));
gdat << " " << loc_inod << endl;
}
}
// --------------------
// .plot
// --------------------
string plot_name = basename + ".plot";
ofstream plot (plot_name.c_str());
cerr << "! file \"" << plot_name << "\" created" << endl;
filelist += " " + plot_name;
plot << "gdat = \"" << gdat_name << "\"" << endl
<< "set title \"" << name() << ": nodes\"" << endl
;
put_hat_node_header<T> (plot, hat_K) ;
string color[4] = {"#ff0000", "#008800", "#0000ff", "#ff00ff"};
bool need_coma = false;
size_type index = 0;
plot << ((d==3) ? "s" : "") << "plot \\" << endl;
if (! option().is_restricted_to_sides()) {
for (size_type dim = 0, d = hat_K.dimension(); dim <= d; ++dim) {
size_type nnod_dim = first_inod_by_dimension (hat_K, dim+1) - first_inod_by_dimension (hat_K, dim);
if (nnod_dim == 0) continue;
plot << " " << (need_coma ? ", " : " ") << "gdat \\" << endl
<< " index " << index << " \\" << endl
<< " w p ps 2 pt 7 lc rgb \"" << color[dim] << "\",\\" << endl
<< " gdat \\" << endl
<< " index " << index << " \\" << endl
<< " u 1:2:3" << ((d==3) ? ":4" : "") << " w labels offset char 2 lc 0 \\" << endl
;
need_coma = true;
index++;
}
} else {
plot << " gdat \\" << endl
<< " w p ps 2 pt 7 lc rgb \"" << color[0] << "\",\\" << endl
<< " gdat \\" << endl
<< " u 1:2:3" << ((d==3) ? ":4" : "") << " w labels offset char 2 lc 0" << endl
;
}
plot << endl
<< "pause -1 \"<return>\"" << endl
;
// -----------
if (execute) {
// -----------
string command = "gnuplot \"" + plot_name + "\"";
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
// -----------
if (clean) {
// -----------
string command = "/bin/rm -f " + filelist;
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
}
// --------------------------------------------------------------------------
// show nodes
// --------------------------------------------------------------------------
template<class T>
void
basis_rep<T>::put_hat_node_on_side (
std::ostream& os,
reference_element hat_K,
const side_information_type& sid) const
{
using namespace std;
check_macro (is_nodal(), "side-node visualization: only nodal basis supported");
Eigen::Matrix<size_type,Eigen::Dynamic,1> loc_inod;
local_idof_on_side (hat_K, sid, loc_inod);
bool verbose = iorheo::getverbose(os);
bool clean = iorheo::getclean(os);
bool execute = iorheo::getexecute(os);
_initialize_data_guard (hat_K);
const Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& hat_x = hat_node (hat_K);
size_type d = hat_K.dimension();
string basename = "basis-" + name() + "-" + hat_K.name();
string filelist;
// --------------------
// .gdat
// --------------------
string gdat_name = basename + ".gdat";
ofstream gdat (gdat_name.c_str());
cerr << "! file \"" << gdat_name << "\" created" << endl;
filelist += " " + gdat_name;
gdat << setprecision(std::numeric_limits<T>::digits10)
<< "# basis " << name() << endl
<< "# element " << hat_K.name() << endl
<< "# degree " << degree() << endl
<< "# ndof " << ndof(hat_K) << endl
<< "# raw_poly " << _sopt.get_raw_polynomial_name() << endl
<< "# nodeset " << _sopt.get_node_name() << endl
<< "# nnode " << hat_x.size() << endl
;
for (size_type loc_sid_inod = 0, loc_sid_nnod = loc_inod.size(); loc_sid_inod < loc_sid_nnod; ++loc_sid_inod) {
hat_x [loc_inod[loc_sid_inod]].put (gdat, max(d,size_type(2)));
gdat << " " << loc_inod[loc_sid_inod] << endl;
}
// --------------------
// .plot
// --------------------
string plot_name = basename + ".plot";
ofstream plot (plot_name.c_str());
cerr << "! file \"" << plot_name << "\" created" << endl;
filelist += " " + plot_name;
plot << "gdat = \"" << gdat_name << "\"" << endl
<< "set title \"" << name() << ": nodes\"" << endl
;
put_hat_node_header<T> (plot, hat_K) ;
string color[4] = {"#ff0000", "#008800", "#0000ff", "#ff00ff"};
bool need_coma = false;
size_type index = 0;
plot << ((d==3) ? "s" : "") << "plot \\" << endl
<< " gdat \\" << endl
<< " w p ps 2 pt 7 lc rgb \"" << color[d] << "\",\\" << endl
<< " gdat \\" << endl
<< " u 1:2:3" << ((d==3) ? ":4" : "") << " w labels offset char 2 lc 0" << endl
<< "pause -1 \"<return>\"" << endl
;
// -----------
if (execute) {
// -----------
string command = "gnuplot \"" + plot_name + "\"";
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
// -----------
if (clean) {
// -----------
string command = "/bin/rm -f " + filelist;
if (verbose) clog << "! " << command << endl;
int status = system (command.c_str());
}
}
// ----------------------------------------------------------------------------
// instanciation in library
// ----------------------------------------------------------------------------
#define _RHEOLEF_instanciation(T) \
template void basis_rep<Float>::put (ostream& os, reference_element hat_K) const; \
template void basis_rep<Float>::put_scalar_valued (ostream& os, reference_element hat_K) const; \
template void basis_rep<Float>::put_vector_valued (ostream& os, reference_element hat_K) const; \
template void basis_rep<Float>::put_hat_node (ostream& os, reference_element hat_K) const; \
template void basis_rep<Float>::put_hat_node_on_side ( \
std::ostream&, reference_element, const side_information_type&) const;
_RHEOLEF_instanciation(Float)
} // namespace rheolef
basis.h
basis - finite element method
basis_on_pointset_evaluate.icc
basis_visu_gnuplot.icc
put
void put(idiststream &in, odiststream &out, bool do_proj, bool do_lumped_mass, bool def_fill_opt, size_type extract_id, const Float &scale_value, const std::pair< Float, Float > &u_range, render_type render)
Definition: branch.cc:500
size_type
field::size_type size_type
Definition: branch.cc:425
Float
see the Float page for the full documentation
point
see the point page for the full documentation
rheolef::basis_rep::size_type
reference_element::size_type size_type
Definition: basis.h:214
rheolef::basis_rep::put_hat_node_on_side
void put_hat_node_on_side(std::ostream &os, reference_element hat_K, const side_information_type &sid) const
Definition: basis_fem_visu_gnuplot.cc:434
rheolef::basis_rep::put_hat_node
void put_hat_node(std::ostream &os, reference_element hat_K) const
Definition: basis_fem_visu_gnuplot.cc:331
rheolef::basis_rep::put_vector_valued
virtual void put_vector_valued(std::ostream &os, reference_element hat_K) const
Definition: basis_fem_visu_gnuplot.cc:51
rheolef::point_basic
Definition: point.h:87
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::reference_element::vertex
const point_basic< Float > & vertex(size_type iloc) const
Definition: reference_element.cc:251
rheolef::reference_element::H
static const variant_type H
Definition: reference_element.h:81
rheolef::reference_element::q
static const variant_type q
Definition: reference_element.h:78
rheolef::reference_element::e
static const variant_type e
Definition: reference_element.h:76
rheolef::reference_element::dimension
size_type dimension() const
Definition: reference_element.h:101
rheolef::reference_element::p
static const variant_type p
Definition: reference_element.h:75
rheolef::reference_element::variant
variant_type variant() const
Definition: reference_element.h:99
rheolef::reference_element::subgeo_local_vertex
size_type subgeo_local_vertex(size_type subgeo_dim, size_type loc_isid, size_type loc_jsidvert) const
Definition: reference_element.h:122
rheolef::reference_element::size_type
std::vector< int >::size_type size_type
Definition: reference_element.h:71
rheolef::reference_element::n_subgeo
size_type n_subgeo(size_type subgeo_dim) const
Definition: reference_element.h:110
rheolef::reference_element::T
static const variant_type T
Definition: reference_element.h:79
rheolef::reference_element::P
static const variant_type P
Definition: reference_element.h:80
rheolef::reference_element::name
char name() const
Definition: reference_element.h:100
rheolef::reference_element::t
static const variant_type t
Definition: reference_element.h:77
rheolef::std
Definition: vec_expr_v2.h:402
rheolef::size_type
size_t size_type
Definition: basis_get.cc:76
rheolef::point_basic< T >
point_basic< T >
Definition: piola_fem.h:135
rheolef::value
rheolef::std value
error_macro
#define error_macro(message)
Definition: dis_macros.h:49
equispaced.icc
T
Expr1::float_type T
Definition: field_expr.h:261
check_macro
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
delta
Float delta(Float f, Float g)
Definition: mosolov_error_yield_surface.cc:29
mkgeo_ball.b
int b
Definition: mkgeo_ball.sh:152
mkgeo_ball.clean
clean
Definition: mkgeo_ball.sh:335
mkgeo_ball.command
string command
Definition: mkgeo_ball.sh:136
mkgeo_ball.d
int d
Definition: mkgeo_ball.sh:154
mkgeo_ball.verbose
verbose
Definition: mkgeo_ball.sh:133
mkgeo_ball.dim
int dim
Definition: mkgeo_ball.sh:307
mkgeo_contraction.status
status
Definition: mkgeo_contraction.sh:290
mkgeo_contraction.mu
mu
Definition: mkgeo_contraction.sh:193
mkgeo_contraction.name
string name
Definition: mkgeo_contraction.sh:133
mkgeo_couette.basename
string basename
Definition: mkgeo_couette.sh:73
rheolef::details::put
void put(const Basis &b, ostream &os, reference_element hat_K)
Definition: basis_visu_gnuplot.icc:32
rheolef::details::basis_on_pointset_evaluate
void basis_on_pointset_evaluate(const Basis &b, const reference_element &hat_K, const Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &hat_x, Eigen::Matrix< Value, Eigen::Dynamic, Eigen::Dynamic > &vdm)
Definition: basis_on_pointset_evaluate.icc:31
rheolef::space_constant::scalar
@ scalar
Definition: space_constant.h:136
rheolef::space_constant::vector
@ vector
Definition: space_constant.h:137
rheolef::space_numbering::nnod
size_type nnod(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:54
rheolef::space_numbering::ndof
size_type ndof(const basis_basic< T > &b, const geo_size &gs, size_type map_dim)
Definition: space_numbering.cc:28
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::pointset_lagrange_equispaced
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)
Definition: equispaced.icc:44
rheolef::norm
T norm(const vec< T, M > &x)
norm(x): see the expression page for the full documentation
Definition: vec.h:387
rheolef::_RHEOLEF_instanciation
_RHEOLEF_instanciation(Float, sequential, std::allocator< Float >) _RHEOLEF_instanciation(Float
rheolef::valued_tag
space_constant::valued_type valued_tag() const
Definition: field_expr_recursive.h:579
a
Definition: diffusion_isotropic.h:25
rheolef::side_information_type
Definition: reference_element_face_transformation.h:37