8#ifndef formulatfrmEformula_hh
9#define formulatfrmEformula_hh
19# define EPS DBL_EPSILON
22# define EPS std::numeric_limits<double>::epsilon()
89 : cell(cell), key(cell.connector().key()){};
92 return this->key <
sb.key;
104 virtual std::ostream&
info(std::ostream&
os)
const{
129 cell(cell), isDummy(
false), key(cell.connector().key().key()){
132 minX[j] = maxX[j] = cell.vertex(0)[j];
134 for(
uint i = 1; i < pow(2,
dimC); ++i){
137 maxX[j] = std::max(maxX[j], cell.vertex(i)[j] );
138 minX[j] = std::min(minX[j], cell.vertex(i)[j] );
146 cell(cell), isDummy(
true), key(cell.connector().key().key()){
148 minX[0] = - std::numeric_limits<double>::max();
152 minX[i] = maxX[i] = - std::numeric_limits<double>::max();
168 return this->key ==
box.key && isDummy ==
box.isDummy;
179 virtual std::ostream&
info(std::ostream&
os)
const{
182 os <<
"["<<minX[i] <<
" , "<< maxX[i] <<
"] x ";
183 os <<
"["<<minX[
dimC-1] <<
" , "<< maxX[
dimC-1] <<
"]";
199 cell(cell), key(cell.connector().key()), cardF(cardF){
206 return this->key ==
cCF.key;
210 return this->key <
cCF.key;
222 virtual std::ostream&
info(std::ostream&
os)
const{
237 ccF(ccF), dist_2((ccF.F[0]-P).l2_2()) {
239 for(
uint i = 1; i < ccF.F.size(); ++i){
240 dist_2 = std::min(dist_2, (ccF.F[i]-P).l2_2());
244 return this->ccF.key ==
ccF_d.ccF.key;
248 return this->dist_2 <
ccF_d.dist_2;
255 virtual std::ostream&
info(std::ostream&
os)
const{
265 template<u
int dimC,
class G>
class MultiVector;
283 typedef std::pair<concepts::Set<CellBox<1>>,
Real> map;
287 typedef std::pair<concepts::Set<CellBox<2>>,
Real> map;
291 typedef std::pair<concepts::Set<CellBox<3>>,
Real> map;
311 template<u
int dimC,
class H>
318 void resize(
const uint (&maxlevel)[
dimC]);
332 virtual std::ostream&
info(std::ostream&
os)
const{
354 virtual const char* what()
const throw();
358 virtual std::ostream&
info(std::ostream&
os)
const throw ();
360 std::string errorMessage_;
361 mutable std::string outputMessage_ ;
531 enum PNF {Exc = 0, NaN, Zero};
563 const Real interior = 0.00000001,
576 const Real t = 0.0)
const;
580 const Real t = 0.0)
const;
584 const Real t = 0.0)
const;
623 virtual std::ostream&
info(std::ostream&
os)
const {
624 return os <<
"u_ = " << this->u_ <<
", pnf_ = " << this->pnf_ ;
650 const Real interior_;
663 mutable bool wasCurved_;
666 mutable bool wasCurved_c_;
674 mutable Z2 cCellType_;
768 typename std::enable_if<dim1 == 1u, uint>::type = 0>
772 const std::array<uint,dim>
idxL,
773 const std::array<uint,dim>
idxR)
const;
776 typename std::enable_if<dim2 == 2u, uint>::type = 0>
780 const std::array<uint,dim>
idxL,
781 const std::array<uint,dim>
idxR)
const ;
784 typename std::enable_if<dim3 == 3u, uint>::type = 0>
788 const std::array<uint,dim>
idxL,
789 const std::array<uint,dim>
idxR)
const;
922 F handlePNF_()
const;
932 const std::array<
Real,std::size_t(1u)> x0,
933 const std::array<
Real,std::size_t(1u)>
xN,
936 const std::array<
Real,std::size_t(2u)> x0,
937 const std::array<
Real,std::size_t(2u)>
xN,
940 const std::array<
Real,std::size_t(3u)> x0,
941 const std::array<
Real,std::size_t(3u)>
xN,
954 const std::array<
Real,std::size_t(
dimC)> x0,
virtual bool operator<(const CellBox< dimC > &box) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
FFEF_Error(const std::string &file, const unsigned int line, const std::string &function, const std::string &errorMessage)
recursive definition of the multivector
#define conceptsAssert(cond, exc)
std::string typeOf(const T &t)
void getChild(const typename JacobianCell< dimC >::cell &cCell, const Point< Real, dimC > &eta, const std::array< Real, std::size_t(dimC)> x0, const std::array< Real, std::size_t(dimC)> xN, const typename JacobianCell< dimC >::cell *&cld)
Set< F > makeSet(uint n, const F &first,...)
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.