21#include "rheolef/geo.h"
22#include "rheolef/geo_domain.h"
23#include "rheolef/rheostream.h"
24#include "rheolef/iorheo.h"
25#include "rheolef/space_numbering.h"
43 return vect2d(b-a, c-a)/2.0;
54 return mixt(b-a, c-a,
d-a)/6;
70 meas1 = meas_T (a0, a1, a2, a3);
71 meas2 = meas_T (a1, a2, a3, a4);
72 meas3 = meas_T (a2, a3, a4, a5);
79 std::cerr << std::setprecision(std::numeric_limits<T>::digits10);
81 switch (K.variant()) {
85 T meas = p[K[1]][0] - p[K[0]][0];
87 if (verbose && !orient) {
88 warning_macro(
"meas(K)="<<meas<<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
93 T meas = meas_t (p[K[0]], p[K[1]], p[K[2]]);
95 if (verbose && !orient) {
96 warning_macro(
"meas(K)="<<meas<<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
101 T meas1 = meas_t (p[K[0]], p[K[1]], p[K[2]]);
102 T meas2 = meas_t (p[K[0]], p[K[2]], p[K[3]]);
103 orient = (meas1 > 0 && meas2 > 0);
104 if (verbose && !orient) {
105 warning_macro(
"meas(K)="<<meas1<<
"+"<<meas2<<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
110 T meas = meas_T (p[K[0]], p[K[1]], p[K[2]], p[K[3]]);
112 if (verbose && !orient) {
113 warning_macro(
"meas(K)="<<meas<<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
118 T meas1, meas2, meas3;
119 meas_P (p[K[0]], p[K[1]], p[K[2]], p[K[3]], p[K[4]], p[K[5]], meas1, meas2, meas3);
120 orient = (meas1 > 0 && meas2 > 0 && meas3 > 0);
121 if (verbose && !orient) {
123 <<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
128 T meas1, meas2, meas3, meas4, meas5, meas6;
129 meas_P (p[K[0]], p[K[1]], p[K[2]], p[K[4]], p[K[5]], p[K[6]], meas1, meas2, meas3);
130 meas_P (p[K[0]], p[K[2]], p[K[3]], p[K[4]], p[K[6]], p[K[7]], meas4, meas5, meas6);
131 orient = (meas1 > 0 && meas2 > 0 && meas3 > 0 && meas4 > 0 && meas5 > 0 && meas6 > 0);
132 if (verbose && !orient) {
134 <<
"+"<<meas4<<
"+"<<meas5<<
"+"<<meas6
135 <<
": invalid negative orientation for element K.dis_ie="<<K.dis_ie());
140 error_macro (
"unexpected element variant `"<<K.variant()<<
"'");
142 bool is_convex =
true;
143 return (orient && is_convex);
156 status = status && check_element (K,
base::_node, verbose);
160#ifdef _RHEOLEF_HAVE_MPI
173#ifdef _RHEOLEF_HAVE_MPI
see the disarray page for the full documentation
disarray< node_type, sequential > _node
see the geo_element page for the full documentation
base::const_iterator const_iterator
iterator end(size_type dim)
iterator begin(size_type dim)
sequential mesh representation
static const variant_type H
static const variant_type q
static const variant_type e
static const variant_type p
static const variant_type T
static const variant_type P
static const variant_type t
#define error_macro(message)
#define warning_macro(message)
This file is part of Rheolef.
T mixt(const point_basic< T > &u, const point_basic< T > &v, const point_basic< T > &w)
T vect2d(const point_basic< T > &v, const point_basic< T > &w)