#include #include #include "defs.hh" #include "gf.hh" using namespace std; // Constructors template gf::gf (const int varindex_, const operator_type transport_operator_, th& t_, dh& d_, const int prolongation_order_time_, const int vectorlength_, const int vectorindex_, ggf* const vectorleader_) : ggf(varindex_, transport_operator_, t_, d_, prolongation_order_time_, vectorlength_, vectorindex_, vectorleader_) { recompose_crop (); for (int rl=0; rl gf::~gf () { for (int rl=0; rl const data* gf::operator() (int tl, int rl, int lc, int ml) const { assert (rl>=0 and rl=0 and lc=0 and ml=0 and tl*)storage.AT(ml).AT(rl).AT(lc).AT(tl); } template data* gf::operator() (int tl, int rl, int lc, int ml) { assert (rl>=0 and rl=0 and lc=0 and ml=0 and tl::operator() " << "vi=" << varindex << " name=" << (varindex>=0 ? CCTK_FullName(varindex) : "") << " " << "pot=" << prolongation_order_time << " " << "tl=" << tl << " rl=" << rl << " lc=" << lc << " ml=" << ml << "\n"; } assert (tl>=0 and tl*)storage.AT(ml).AT(rl).AT(lc).AT(tl); } #endif // Memory usage template size_t gf:: memory () const { return ggf::memory(); } // Output template ostream& gf::output (ostream& os) const { T Tdummy; os << "gf<" << typestring(Tdummy) << ">:" << varindex << "[" << CCTK_VarName(varindex) << "]," << "tls=" << timelevels_; return os; } #define TYPECASE(N,T) \ template class gf; #include "typecase.hh" #undef TYPECASE