SyFi
0.3
|
#include <Polygon.h>
Public Member Functions | |
Simplex (GiNaC::lst vertices, const std::string &subscript="") | |
Simplex (const Simplex &simplex) | |
virtual | ~Simplex () |
virtual unsigned int | no_space_dim () const |
virtual GiNaC::ex | repr (Repr_format format=SUBS_PERFORMED) const |
virtual const std::string | str () const |
virtual GiNaC::ex | integrate (GiNaC::ex f, Repr_format format=SUBS_PERFORMED) |
Simplex | sub_simplex (unsigned int i) |
virtual Simplex * | copy () const |
SyFi::Simplex::Simplex | ( | GiNaC::lst | vertices, |
const std::string & | subscript = "" |
||
) |
Referenced by copy(), and sub_simplex().
SyFi::Simplex::Simplex | ( | const Simplex & | simplex | ) |
Definition at line 1271 of file Polygon.cpp.
: Polygon(simplex) { }
virtual SyFi::Simplex::~Simplex | ( | ) | [inline, virtual] |
Simplex * SyFi::Simplex::copy | ( | ) | const [virtual] |
Implements SyFi::Polygon.
Definition at line 1385 of file Polygon.cpp.
References Simplex().
{ return new Simplex(*this); }
ex SyFi::Simplex::integrate | ( | GiNaC::ex | f, |
Repr_format | format = SUBS_PERFORMED |
||
) | [virtual] |
Implements SyFi::Polygon.
Definition at line 1344 of file Polygon.cpp.
References SyFi::nsd, repr(), and SyFi::Polygon::vertex().
Referenced by main().
{ ex ret; unsigned int nsd = vertex(0).nops(); ex s_repr = repr(); lst subs; for (unsigned int i=0; i< nsd; i++) { subs.append(s_repr.op(i)); } ex intf = func.subs(subs); for (unsigned int i=s_repr.nops()-1; i>=nsd; i--) { intf = GiNaC::integral(s_repr.op(i).op(0), s_repr.op(i).op(1), s_repr.op(i).op(2), intf); intf = GiNaC::eval_integ(intf); } return intf; }
unsigned int SyFi::Simplex::no_space_dim | ( | ) | const [virtual] |
ex SyFi::Simplex::repr | ( | Repr_format | format = SUBS_PERFORMED | ) | const [virtual] |
Implements SyFi::Polygon.
Definition at line 1281 of file Polygon.cpp.
References SyFi::get_symbolic_vector(), SyFi::Polygon::no_vertices(), SyFi::nsd, SyFi::Polygon::vertex(), and SyFi::x.
Referenced by integrate(), and main().
{ unsigned int nsd = vertex(0).nops(); unsigned int no_lines = no_vertices()-1; ex r = get_symbolic_vector(nsd, "r"); ex x = get_symbolic_vector(nsd, "x"); ex ri; lst lines; for (unsigned int i=0; i< no_vertices()-1; i++) { ri = r.op(i); lst line_i_repr; for (unsigned int d=0; d< nsd; d++) { line_i_repr.append(x.op(d) == (vertex(i+1).op(d) - vertex(0).op(d))*ri + vertex(0).op(d)); } line_i_repr.append(lst(ri, 0, 1)); lines.append(line_i_repr); } lst ret; for (unsigned int i=0; i < nsd; i++) { ri = r.op(i); GiNaC::ex xi_expr; GiNaC::ex rhs = lines.op(0).op(i).rhs().coeff(ri,0); for (unsigned int l=0; l < no_lines; l++) { // xi_expr2 == xi_expr.lhs() == xi_expr.rhs() + lines.op(l).op(i).rhs().coeff(ri,1)*ri; rhs += lines.op(l).op(i).rhs().coeff(ri,1)*ri; } xi_expr = x.op(i) == rhs; ret.append(xi_expr); } GiNaC::ex limit=1; for (unsigned int i=0; i< no_lines; i++) { ri = r.op(i); ret.append(lst(ri, 0, limit)); limit -= ri; } return ret; }
const string SyFi::Simplex::str | ( | ) | const [virtual] |
Implements SyFi::Polygon.
Definition at line 1330 of file Polygon.cpp.
Referenced by main().
{ std::ostringstream s; /* s <<"Simplex("; for (int i=0; i<p.size()-1; i++) { s << p[i]<<","; } s << p[p.size()-1]<<")"; */ s <<"Simplex"; return s.str(); }
Simplex SyFi::Simplex::sub_simplex | ( | unsigned int | i | ) |
Definition at line 1368 of file Polygon.cpp.
References SyFi::istr(), Simplex(), SyFi::Polygon::subscript, and test_syfi::debug::v.
Referenced by main().