#include #include "cctk.h" #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 tmin, const int tmax, const int prolongation_order_time, const int vectorlength, const int vectorindex, gf* const vectorleader) : ggf(varindex, transport_operator, t, d, tmin, tmax, prolongation_order_time, vectorlength, vectorindex, vectorleader) { // this->recompose (); this->recompose_crop (); for (int rl=0; rlh.reflevels(); ++rl) { this->recompose_allocate (rl); #if 0 for (comm_state state; !state.done(); state.step()) { this->recompose_fill (state, rl, false); } #endif this->recompose_free (rl); #if 0 for (comm_state state; !state.done(); state.step()) { this->recompose_bnd_prolongate (state, rl, false); } for (comm_state state; !state.done(); state.step()) { this->recompose_sync (state, rl, false); } #endif } // for rl } // Destructors template gf::~gf () { } // Access to the data template const data* gf::operator() (int tl, int rl, int c, int ml) const { assert (tl>=this->tmin && tl<=this->tmax); assert (rl>=0 && rlh.reflevels()); assert (c>=0 && ch.components(rl)); assert (ml>=0 && mlh.mglevels(rl,c)); return (const data*)this->storage.at(tl-this->tmin).at(rl).at(c).at(ml); } template data* gf::operator() (int tl, int rl, int c, int ml) { assert (tl>=this->tmin && tl<=this->tmax); assert (rl>=0 && rlh.reflevels()); assert (c>=0 && ch.components(rl)); assert (ml>=0 && mlh.mglevels(rl,c)); return (data*)this->storage.at(tl-this->tmin).at(rl).at(c).at(ml); } // Output template ostream& gf::output (ostream& os) const { T Tdummy; os << "gf<" << typestring(Tdummy) << ">:" << this->varindex << "[" << CCTK_VarName(this->varindex) << "]," << "dt=[" << this->tmin << ":" << this->tmax<< "]"; return os; } #define INSTANTIATE(T) \ template class gf; #include "instantiate" #undef INSTANTIATE