WASO7G5FJXRXWNH2U2FLUNEKU6VE63OI3HUYP64BVD4LMD6KE7OQC RCLGQ2LZMFVPBPTU2G55DJ6HZPOGGTPZRZCY54VGP6YLHANJ2LAQC IVHURSHY4636OGIF3PNDO5CWOVRLJ75M4LP65J6I2E6KAM4QKF4AC 722HZ7UFINNE3YKSYKP2NHZ5XEG5QQLQHSKC7PREJZR3EX6RDYUAC ORAAQXS3UNKXYDJBCTHNEIDJIZDHWMM5EVCZKVMFRKQK2NIQNJGAC AEVGZIZEUIC52MCK3J4V547YEV2R4YQL3JUJW7FSP4R34PSZ43DAC UUGQGVC4WEKN64WAP7F5QPS2UHGQB5ZLMFRIYNWKMIEBDO3QRX4AC U77PE56ICORZNQW33NXGSEMW7GDHCSSZ4EXB6OHBJSHEG6WHYSSQC RTNZAS3UPI6GG3KY4Z5WVXJ4R2YF5427BB6WAV3GHRS5W7XPOSUQC BVR7DVINVPQG7PA6Z7QYVYNQ43YZL7XCC6AOMSMWMGAAB2Q43STAC PQB3EKQ6MBCXPTW4HB7SGMSTOTYMB3EFZX2573OFCQI6PSOEKCSQC WE6MDRN5SPK3THM4COLQFE3IUWBCQ5ZYUIAUCBJAZVEMMOVTNBOAC string groupname = unique_ptr<char>(CCTK_GroupName(gi)).get();groupname = regex_replace(groupname, regex("::"), "-");for (auto &c : groupname)c = tolower(c);ostringstream buf;buf << "wavetoy/" << groupname << "." << setw(6) << setfill('0')<< cctk_iteration;string filename = buf.str();
string groupname = unique_ptr<char>(CCTK_GroupName(gi)).get();groupname = regex_replace(groupname, regex("::"), "-");for (auto &c : groupname)c = tolower(c);ostringstream buf;buf << "wavetoy/" << groupname;buf << ".rl" << setw(2) << setfill('0') << level.level;buf << ".it" << setw(6) << setfill('0') << cctk_iteration;string filename = buf.str();
Vector<string> varnames(groupdata.numvars * groupdata.numtimelevels);for (int tl = 0; tl < groupdata.numtimelevels; ++tl) {for (int n = 0; n < groupdata.numvars; ++n) {ostringstream buf;buf << CCTK_VarName(groupdata.firstvarindex + n);for (int i = 0; i < tl; ++i)buf << "_p";varnames.at(tl * groupdata.numvars + n) = buf.str();
Vector<string> varnames(groupdata.numvars * groupdata.numtimelevels);for (int tl = 0; tl < groupdata.numtimelevels; ++tl) {for (int n = 0; n < groupdata.numvars; ++n) {ostringstream buf;buf << CCTK_VarName(groupdata.firstvarindex + n);for (int i = 0; i < tl; ++i)buf << "_p";varnames.at(tl * groupdata.numvars + n) = buf.str();}
// TODO: Output only current time level. This might require having one// mfab per time level// TODO: Output everything into a single fileWriteSingleLevelPlotfile(filename, groupdata.mfab, varnames, ghext->geom,cctk_time, cctk_iteration);
// TODO: Output only current time level. This might require having one// mfab per time level// TODO: Output all levels into a single file// TODO: Output everything into a single fileWriteSingleLevelPlotfile(filename, groupdata.mfab, varnames, level.geom,cctk_time, cctk_iteration);
for (auto &restrict groupdata : ghext->groupdata) {for (int tl = groupdata.numtimelevels - 1; tl > 0; --tl)MultiFab::Copy(groupdata.mfab, groupdata.mfab,(tl - 1) * groupdata.numvars, tl * groupdata.numvars,groupdata.numvars, ghost_size);}
for (auto &restrict level : ghext->levels)for (auto &restrict groupdata : level.groupdata) {for (int tl = groupdata.numtimelevels - 1; tl > 0; --tl)MultiFab::Copy(groupdata.mfab, groupdata.mfab,(tl - 1) * groupdata.numvars, tl * groupdata.numvars,groupdata.numvars, ghost_size);}
for (MFIter mfi(mfab, mfitinfo); mfi.isValid(); ++mfi) {enter_local_mode(threadGH, mfi);CCTK_CallFunction(function, attribute, threadGH);
for (auto &restrict level : ghext->levels) {MultiFab &mfab = level.groupdata.at(0).mfab;enter_level_mode(threadGH, level);auto mfitinfo =MFItInfo().SetDynamic(true).EnableTiling({1024000, 16, 32});for (MFIter mfi(mfab, mfitinfo); mfi.isValid(); ++mfi) {enter_local_mode(threadGH, level, mfi);CCTK_CallFunction(function, attribute, threadGH);leave_local_mode(threadGH, level, mfi);}leave_level_mode(threadGH, level);
for (int n = 0; n < numgroups; ++n) {int gi = groups[n];auto &restrict groupdata = ghext->groupdata.at(gi);// we always sync all directionsgroupdata.mfab.FillBoundary(ghext->geom.periodicity());}
for (auto &restrict level : ghext->levels)for (int n = 0; n < numgroups; ++n) {int gi = groups[n];auto &restrict groupdata = level.groupdata.at(gi);// we always sync all directionsgroupdata.mfab.FillBoundary(level.geom.periodicity());}