diff --git a/Algo/test/test_roots.par b/Algo/test/test_roots.par index 70b269910..1b3258143 100644 --- a/Algo/test/test_roots.par +++ b/Algo/test/test_roots.par @@ -6,3 +6,9 @@ ActiveThorns = " Cactus::presync_mode = "mixed-error" Cactus::cctk_itlast = 0 + +IO::out_fileinfo = "axis labels" +IO::parfile_write = no + +CarpetX::out_metadata = no + diff --git a/Arith/src/defs.hxx b/Arith/src/defs.hxx index cdecb4aaa..58bb55a6a 100644 --- a/Arith/src/defs.hxx +++ b/Arith/src/defs.hxx @@ -206,6 +206,12 @@ constexpr ARITH_INLINE ARITH_DEVICE ARITH_HOST T flipsign(const T &x, return copysign(T(1), y) * x; } +// Return 1/x +template +constexpr ARITH_INLINE ARITH_DEVICE ARITH_HOST T inv(const T &x) { + return T(1) / x; +} + // A max function that returns nan when any argument is nan template constexpr ARITH_INLINE ARITH_DEVICE ARITH_HOST T max1(const T &x, const T &y) { diff --git a/Arith/src/simd.cxx b/Arith/src/simd.cxx index 17dd8e09d..26b1c5448 100644 --- a/Arith/src/simd.cxx +++ b/Arith/src/simd.cxx @@ -3,6 +3,7 @@ #include #include +#include namespace Arith { @@ -25,17 +26,34 @@ std::size_t get_memop_count() { return count; } +template constexpr bool isequal(const simd x, const T a) { + return all(x == a); +} +template constexpr bool isequal(const simdl x, const bool a) { + return all(x == a); +} +template constexpr bool isapprox(const simd x, const T a) { + return all(fabs(x - a) < 1.0e-14); +} + +void check(const bool isgood) { + if (isgood) + return; + CCTK_ERROR("Test failure"); +} + void TestSIMD() { // nvcc V11.1.74 doesn't accept this as "constexpr" values #ifndef __CUDACC__ - typedef simd realv; + using real = CCTK_REAL; + using realv = simd; realv x; realv y = 0; realv z = zero(); - assert(all(y == 0)); - assert(all(y == z)); + check(all(y == 0)); + check(all(y == z)); realv a = 2; realv b = 3; @@ -45,10 +63,131 @@ void TestSIMD() { realv r1 = mulsub(a, b, c); realv r2 = negmuladd(a, b, c); realv r3 = negmulsub(a, b, c); - assert(all(r0 == muladd(2, 3, 4))); - assert(all(r1 == mulsub(2, 3, 4))); - assert(all(r2 == negmuladd(2, 3, 4))); - assert(all(r3 == negmulsub(2, 3, 4))); + check(all(r0 == muladd(2, 3, 4))); + check(all(r1 == mulsub(2, 3, 4))); + check(all(r2 == negmuladd(2, 3, 4))); + check(all(r3 == negmulsub(2, 3, 4))); + + real s = 2; + real t = 2; + real u = 4; + + check(isequal(+a, +s)); + check(isequal(-a, -s)); + + check(isequal(a + b, s + t)); + check(isequal(a - b, s - t)); + check(isequal(a * b, s * t)); + check(isequal(a / b, s / t)); + check(isequal(s + b, s + t)); + check(isequal(s - b, s - t)); + check(isequal(s * b, s * t)); + check(isequal(s / b, s / t)); + check(isequal(a + t, s + t)); + check(isequal(a - t, s - t)); + check(isequal(a * t, s * t)); + check(isequal(a / t, s / t)); + + check(isequal(a == b, s == t)); + check(isequal(a != b, s != t)); + check(isequal(a < b, s < t)); + check(isequal(a > b, s > t)); + check(isequal(a <= b, s <= t)); + check(isequal(a >= b, s >= t)); + check(isequal(s == b, s == t)); + check(isequal(s != b, s != t)); + check(isequal(s < b, s < t)); + check(isequal(s > b, s > t)); + check(isequal(s <= b, s <= t)); + check(isequal(s >= b, s >= t)); + check(isequal(a == t, s == t)); + check(isequal(a != t, s != t)); + check(isequal(a < t, s < t)); + check(isequal(a > t, s > t)); + check(isequal(a <= t, s <= t)); + check(isequal(a >= t, s >= t)); + + check(isapprox(abs(a), abs(s))); + check(isapprox(acos(a), acos(s))); + check(isapprox(acosh(a), acosh(s))); + check(allisfinite(a) == allisfinite(s)); + check(anyisnan(a) == anyisnan(s)); + check(isapprox(asin(a), asin(s))); + check(isapprox(asinh(a), asinh(s))); + check(isapprox(atan(a), atan(s))); + check(isapprox(atanh(a), atanh(s))); + check(isapprox(cbrt(a), cbrt(s))); + // check(isapprox(cis(a), cis(s))); + // check(isapprox(cispi(a), cispi(s))); + check(isapprox(copysign(a, b), copysign(s, t))); + check(isapprox(cos(a), cos(s))); + check(isapprox(cosh(a), cosh(s))); + check(isapprox(cospi(a), cos(CCTK_REAL(M_PI) * s))); + check(isapprox(exp(a), exp(s))); + check(isapprox(exp10(a), pow(CCTK_REAL(10), s))); + check(isapprox(exp2(a), exp2(s))); + check(isapprox(fabs(a), fabs(s))); + check(isapprox(flipsign(a, b), flipsign(s, t))); + check(isapprox(fmax(a, b), fmax(s, t))); + check(isapprox(fmax(a, t), fmax(s, t))); + check(isapprox(fmax(s, b), fmax(s, t))); + check(isapprox(fmin(a, b), fmin(s, t))); + check(isapprox(fmin(a, t), fmin(s, t))); + check(isapprox(fmin(s, b), fmin(s, t))); + check(isapprox(hypot(a, b), hypot(s, t))); + check(isapprox(inv(a), inv(s))); + check(isequal(isfinite(a), isfinite(s))); + check(isequal(isinf(a), isinf(s))); + check(isequal(isnan(a), isnan(s))); + check(isapprox(log(a), log(s))); + check(isapprox(log10(a), log10(s))); + check(isapprox(log2(a), log2(s))); + check(isapprox(max(a, b), max(s, t))); + check(isapprox(max(a, t), max(s, t))); + check(isapprox(max(s, b), max(s, t))); + check(isapprox(min(a, b), min(s, t))); + check(isapprox(min(a, t), min(s, t))); + check(isapprox(min(s, b), min(s, t))); + check(isapprox(muladd(a, b, c), muladd(s, t, u))); + check(isapprox(muladd(a, b, u), muladd(s, t, u))); + check(isapprox(muladd(a, t, c), muladd(s, t, u))); + check(isapprox(muladd(a, t, u), muladd(s, t, u))); + check(isapprox(muladd(s, b, c), muladd(s, t, u))); + check(isapprox(muladd(s, b, u), muladd(s, t, u))); + check(isapprox(muladd(s, t, c), muladd(s, t, u))); + check(isapprox(mulsub(a, b, c), mulsub(s, t, u))); + check(isapprox(mulsub(a, b, u), mulsub(s, t, u))); + check(isapprox(mulsub(a, t, c), mulsub(s, t, u))); + check(isapprox(mulsub(a, t, u), mulsub(s, t, u))); + check(isapprox(mulsub(s, b, c), mulsub(s, t, u))); + check(isapprox(mulsub(s, b, u), mulsub(s, t, u))); + check(isapprox(mulsub(s, t, c), mulsub(s, t, u))); + check(isapprox(negmuladd(a, b, c), negmuladd(s, t, u))); + check(isapprox(negmuladd(a, b, u), negmuladd(s, t, u))); + check(isapprox(negmuladd(a, t, c), negmuladd(s, t, u))); + check(isapprox(negmuladd(a, t, u), negmuladd(s, t, u))); + check(isapprox(negmuladd(s, b, c), negmuladd(s, t, u))); + check(isapprox(negmuladd(s, b, u), negmuladd(s, t, u))); + check(isapprox(negmuladd(s, t, c), negmuladd(s, t, u))); + check(isapprox(negmulsub(a, b, c), negmulsub(s, t, u))); + check(isapprox(negmulsub(a, b, u), negmulsub(s, t, u))); + check(isapprox(negmulsub(a, t, c), negmulsub(s, t, u))); + check(isapprox(negmulsub(a, t, u), negmulsub(s, t, u))); + check(isapprox(negmulsub(s, b, c), negmulsub(s, t, u))); + check(isapprox(negmulsub(s, b, u), negmulsub(s, t, u))); + check(isapprox(negmulsub(s, t, c), negmulsub(s, t, u))); + check(isapprox(pow(a, b), pow(s, t))); + check(isapprox(pow(a, t), pow(s, t))); + check(isapprox(pow(s, b), pow(s, t))); + check(isequal(signbit(a), signbit(s))); + check(isapprox(sin(a), sin(s))); + check(isapprox(sinh(a), sinh(s))); + check(isapprox(sinpi(a), sin(CCTK_REAL(M_PI) * s))); + check(isapprox(sqrt(a), sqrt(s))); + check(isapprox(tan(a), tan(s))); + check(isapprox(tanh(a), tanh(s))); + // check(isapprox(tanpi(a), tanpi(s))); + #endif } diff --git a/Arith/src/simd.hxx b/Arith/src/simd.hxx index 366060dfc..9f946b61e 100644 --- a/Arith/src/simd.hxx +++ b/Arith/src/simd.hxx @@ -7,14 +7,19 @@ // // Disable SIMD when the `NSIMD` library is not available // #ifndef HAVE_CAPABILITY_NSIMD -// #ifndef SIMD_CPU -// #define SIMD_CPU +// #ifndef SIMD_DISABLE +// #define SIMD_DISABLE // #endif // #endif +// Accept `SIMD_CPU` as well for backward compatibility +#ifdef SIMD_CPU +#define SIMD_DISABLE +#endif + #include "defs.hxx" -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE #include #undef vec // This should arguably not be defined in C++ #else @@ -36,7 +41,7 @@ using namespace std; template struct simd; template struct simdl; -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE namespace detail { struct reinterpret32 { typedef i32 int_type; @@ -86,7 +91,7 @@ std::size_t get_memop_count(); template struct simd { using value_type = T; -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE using storage_type = nsimd::pack; #else using storage_type = T; @@ -101,7 +106,7 @@ template struct simd { constexpr ARITH_DEVICE ARITH_HOST simd() {} constexpr ARITH_DEVICE ARITH_HOST simd(const T &a) : elts(a) {} -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE template , T> > * = nullptr> constexpr ARITH_DEVICE ARITH_HOST simd(const nsimd::pack &elts) @@ -122,7 +127,7 @@ template struct simd { } constexpr ARITH_DEVICE ARITH_HOST std::size_t size() const { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return sizeof(nsimd::pack) / sizeof(T); #else return 1; @@ -133,7 +138,7 @@ template struct simd { #ifdef CCTK_DEBUG assert(n >= 0 && n < int(storage_size)); #endif -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE T xarr[storage_size]; storeu(xarr, *this); return xarr[n]; @@ -160,7 +165,7 @@ template struct simd { friend constexpr ARITH_DEVICE ARITH_HOST simd operator+(const simd &x) { count_flop(); - return +x.elts; + return x.elts; } friend constexpr ARITH_DEVICE ARITH_HOST simd operator-(const simd &x) { count_flop(); @@ -439,13 +444,23 @@ template struct simd { return abs(x.elts); } - friend constexpr ARITH_DEVICE ARITH_HOST simd andnot(const simd &x, - const simd &y) { -#ifndef SIMD_CPU - count_flop(); - return andnotb(x.elts, y.elts); + friend constexpr ARITH_DEVICE ARITH_HOST simd acos(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return acos_u10(x.elts); #else - return x & ~y; + using std::acos; + return acos(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd acosh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return acosh_u10(x.elts); +#else + using std::acosh; + return acosh(x.elts); #endif } @@ -454,14 +469,74 @@ template struct simd { return all(isfinite(x)); } + friend constexpr ARITH_DEVICE ARITH_HOST simd andnot(const simd &x, + const simd &y) { +#ifndef SIMD_DISABLE + count_flop(); + return andnotb(x.elts, y.elts); +#else + return x & ~y; +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST bool anyisnan(const simd &x) { using std::isnan; return any(isnan(x)); } + friend constexpr ARITH_DEVICE ARITH_HOST simd asin(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return asin_u10(x.elts); +#else + using std::asin; + return asin(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd asinh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return asinh_u10(x.elts); +#else + using std::asinh; + return asinh(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd atan(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return atan_u10(x.elts); +#else + using std::atan; + return atan(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd atanh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return atanh_u10(x.elts); +#else + using std::atanh; + return atanh(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd cbrt(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return cbrt_u10(x.elts); +#else + using std::cbrt; + return cbrt(x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simd copysign(const simd &x, const simd &y) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE typedef detail::unsigned_type U; const T signmask = nsimd::scalar_reinterpret(T{}, U(1) << (8 * sizeof(U) - 1)); @@ -473,6 +548,68 @@ template struct simd { #endif } + friend constexpr ARITH_DEVICE ARITH_HOST simd cos(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return cos_u10(x.elts); +#else + using std::cos; + return cos(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd cosh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return cosh_u10(x.elts); +#else + using std::cosh; + return cosh(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd cospi(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return cospi_u05(x.elts); +#else + using std::acos, std::cos; + const T pi = acos(T(-1)); + return cos(pi * x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd exp(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return exp_u10(x.elts); +#else + using std::exp; + return exp(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd exp10(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return exp10_u10(x.elts); +#else + using std::exp2; + const T log2_10 = log2(T(10)); + return exp2(log2_10 * x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd exp2(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return exp2_u10(x.elts); +#else + using std::exp2; + return exp2(x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simd fabs(const simd &x) { count_flop(); using std::abs; @@ -481,7 +618,7 @@ template struct simd { friend constexpr ARITH_DEVICE ARITH_HOST simd flipsign(const simd &x, const simd &y) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE typedef detail::unsigned_type U; const T signmask = nsimd::scalar_reinterpret(T{}, U(1) << (8 * sizeof(U) - 1)); @@ -531,6 +668,26 @@ template struct simd { return min(x, simd(b)); } + friend constexpr ARITH_DEVICE ARITH_HOST simd hypot(const simd &x, + const simd &y) { + count_flop(10); +#ifndef SIMD_DISABLE + return hypot_u05(x.elts, y.elts); +#else + using std::hypot; + return hypot(x.elts, y.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd inv(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return rec(x.elts); +#else + return inv(x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simdl isfinite(const simd &x) { // using std::isfinite; // return isfinite(x.elts); @@ -549,6 +706,36 @@ template struct simd { return x != x; } + friend constexpr ARITH_DEVICE ARITH_HOST simd log(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return log_u10(x.elts); +#else + using std::log; + return log(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd log10(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return log10_u10(x.elts); +#else + using std::log10; + return log10(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd log2(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return log2_u10(x.elts); +#else + using std::log2; + return log2(x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simd max(const simd &x, const simd &y) { count_flop(); @@ -603,7 +790,7 @@ template struct simd { const simd &y, const simd &z) { count_flop(2); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::fma(x.elts, y.elts, z.elts); #else return muladd(x.elts, y.elts, z.elts); @@ -642,7 +829,7 @@ template struct simd { const simd &y, const simd &z) { count_flop(2); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::fms(x.elts, y.elts, z.elts); #else return mulsub(x.elts, y.elts, z.elts); @@ -681,7 +868,7 @@ template struct simd { const simd &y, const simd &z) { count_flop(2); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::fnma(x.elts, y.elts, z.elts); #else return negmuladd(x.elts, y.elts, z.elts); @@ -722,7 +909,7 @@ template struct simd { const simd &y, const simd &z) { count_flop(2); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::fnms(x.elts, y.elts, z.elts); #else return negmulsub(x.elts, y.elts, z.elts); @@ -759,8 +946,25 @@ template struct simd { return negmulsub(x, simd(b), simd(c)); } + friend constexpr ARITH_DEVICE ARITH_HOST simd pow(const simd &x, + const simd &y) { + count_flop(10); +#ifndef SIMD_DISABLE + return pow_u10(x.elts, y.elts); +#else + using std::pow; + return pow(x.elts, y.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simd pow(const simd &x, const T &b) { + return pow(x, simd(b)); + } + friend constexpr ARITH_DEVICE ARITH_HOST simd pow(const T &a, const simd &y) { + return pow(simd(a), y); + } + friend constexpr ARITH_DEVICE ARITH_HOST simdl signbit(const simd &x) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE typedef detail::unsigned_type U; const T signmask = nsimd::scalar_reinterpret(T{}, U(1) << (8 * sizeof(U) - 1)); @@ -771,19 +975,70 @@ template struct simd { #endif } + friend constexpr ARITH_DEVICE ARITH_HOST simd sin(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return sin_u10(x.elts); +#else + using std::sin; + return sin(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd sinh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return sinh_u10(x.elts); +#else + using std::sinh; + return sinh(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd sinpi(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return sinpi_u05(x.elts); +#else + using std::acos, std::sin; + const T pi = acos(T(-1)); + return sin(pi * x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simd sqrt(const simd &x) { count_flop(10); using std::sqrt; return sqrt(x.elts); } + friend constexpr ARITH_DEVICE ARITH_HOST simd tan(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return tan_u10(x.elts); +#else + using std::tan; + return tan(x.elts); +#endif + } + + friend constexpr ARITH_DEVICE ARITH_HOST simd tanh(const simd &x) { + count_flop(10); +#ifndef SIMD_DISABLE + return tanh_u10(x.elts); +#else + using std::tanh; + return tanh(x.elts); +#endif + } + friend constexpr ARITH_DEVICE ARITH_HOST simdl to_logical(const simd &x) { return to_logical(x.elts); } friend ARITH_DEVICE ARITH_HOST void storea(T *ptr, const simd &x) { count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE storea(ptr, x.elts); #else *ptr = x.elts; @@ -791,7 +1046,7 @@ template struct simd { } friend ARITH_DEVICE ARITH_HOST void storeu(T *ptr, const simd &x) { count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE storeu(ptr, x.elts); #else *ptr = x.elts; @@ -800,7 +1055,7 @@ template struct simd { friend ARITH_DEVICE ARITH_HOST void mask_storea(const simdl &mask, T *ptr, const simd &x) { count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE mask_storea(mask.elts, ptr, x.elts); #else if (mask.elts) @@ -810,11 +1065,27 @@ template struct simd { friend ARITH_DEVICE ARITH_HOST void mask_storeu(const simdl &mask, T *ptr, const simd &x) { count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE mask_storeu(mask.elts, ptr, x.elts); #else - if (mask.elts) + if (mask.elts) { +#if 0 && defined __CUDACC__ + // __stwb: Cache write-back all coherent levels + // __stcg: Cache at global level (cache in L2 and below, not L1) + // __stcs: Cache streaming, likely to be accessed once + // __stwt: Cache write-through (to system memory) + __stwt(ptr, x.elts); +#elif 0 && defined __HIPCC__ + __builtin_nontemporal_store(x.elts, ptr); +#else + // CPU +#if 0 && defined __llvm__ + __builtin_nontemporal_store(x.elts, ptr); +#else *ptr = x.elts; +#endif +#endif + } #endif } @@ -873,7 +1144,7 @@ template struct nan > { template ARITH_DEVICE ARITH_HOST inline simd iota() { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::iota >(); #else return 0; @@ -884,7 +1155,7 @@ template ARITH_DEVICE ARITH_HOST inline simdl mask_for_loop_tail(const int i, const int n) { simd::count_flop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::mask_for_loop_tail >(i, n); #else return i < n; @@ -894,7 +1165,7 @@ ARITH_DEVICE ARITH_HOST inline simdl mask_for_loop_tail(const int i, template ARITH_DEVICE ARITH_HOST inline simd loada(const T *ptr) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::loada >(ptr); #else return *ptr; @@ -904,7 +1175,7 @@ ARITH_DEVICE ARITH_HOST inline simd loada(const T *ptr) { template ARITH_DEVICE ARITH_HOST inline simd loadu(const T *ptr) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::loadu >(ptr); #else return *ptr; @@ -915,7 +1186,7 @@ template ARITH_DEVICE ARITH_HOST inline simd maskz_loada(const simdl &mask, const T *ptr) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::maskz_loada(mask.elts, ptr); #else return mask.elts ? *ptr : 0; @@ -926,7 +1197,7 @@ template ARITH_DEVICE ARITH_HOST inline simd maskz_loadu(const simdl &mask, const T *ptr) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return nsimd::maskz_loadu(mask.elts, ptr); #else return mask.elts ? *ptr : 0; @@ -937,7 +1208,7 @@ template ARITH_DEVICE ARITH_HOST inline simd masko_loada(const simdl &mask, const T *ptr, const simd &other) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return masko_loada(mask.elts, ptr, other.elts); #else return mask.elts ? *ptr : other.elts; @@ -948,7 +1219,7 @@ template ARITH_DEVICE ARITH_HOST inline simd masko_loadu(const simdl &mask, const T *ptr, const simd &other) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return masko_loadu(mask.elts, ptr, other.elts); #else return mask.elts ? *ptr : other.elts; @@ -960,7 +1231,7 @@ template masko_loada(const simdl &mask, const T *ptr, const U &other) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return masko_loada(mask, ptr, simd(other)); #else return mask.elts ? *ptr : other; @@ -972,78 +1243,13 @@ template masko_loadu(const simdl &mask, const T *ptr, const U &other) { simd::count_memop(); -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return masko_loadu(mask, ptr, simd(other)); #else return mask.elts ? *ptr : other; #endif } -template -ARITH_DEVICE ARITH_HOST inline simd acos(const simd &x) { - simd::count_memop(10); - alignas(simd) T xarr[simd::storage_size]; - storea(xarr, x); - alignas(simd) T yarr[simd::storage_size]; - using std::acos; - for (std::size_t n = 0; n < x.size(); ++n) - yarr[n] = acos(xarr[n]); - const simd y = loada >(yarr); - return y; -} - -template -ARITH_DEVICE ARITH_HOST inline simd cbrt(const simd &x) { - simd::count_memop(10); - alignas(simd) T xarr[simd::storage_size]; - storea(xarr, x); - alignas(simd) T yarr[simd::storage_size]; - using std::cbrt; - for (std::size_t n = 0; n < x.size(); ++n) - yarr[n] = cbrt(xarr[n]); - const simd y = loada >(yarr); - return y; -} - -template -ARITH_DEVICE ARITH_HOST inline simd cos(const simd &x) { - simd::count_memop(10); - alignas(simd) T xarr[simd::storage_size]; - storea(xarr, x); - alignas(simd) T yarr[simd::storage_size]; - using std::cos; - for (std::size_t n = 0; n < x.size(); ++n) - yarr[n] = cos(xarr[n]); - const simd y = loada >(yarr); - return y; -} - -template -ARITH_DEVICE ARITH_HOST inline simd exp(const simd &x) { - simd::count_memop(10); - alignas(simd) T xarr[simd::storage_size]; - storea(xarr, x); - alignas(simd) T yarr[simd::storage_size]; - using std::exp; - for (std::size_t n = 0; n < x.size(); ++n) - yarr[n] = exp(xarr[n]); - const simd y = loada >(yarr); - return y; -} - -template -ARITH_DEVICE ARITH_HOST inline simd sin(const simd &x) { - simd::count_memop(10); - alignas(simd) T xarr[simd::storage_size]; - storea(xarr, x); - alignas(simd) T yarr[simd::storage_size]; - using std::sin; - for (std::size_t n = 0; n < x.size(); ++n) - yarr[n] = sin(xarr[n]); - const simd y = loada >(yarr); - return y; -} - //////////////////////////////////////////////////////////////////////////////// // A SIMD vector of booleans, usable with `simd`. @@ -1059,7 +1265,7 @@ ARITH_DEVICE ARITH_HOST inline simd sin(const simd &x) { template struct simdl { typedef T value_type; -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE using storage_type = nsimd::packl; #else using storage_type = bool; @@ -1074,13 +1280,13 @@ template struct simdl { constexpr ARITH_DEVICE ARITH_HOST simdl() {} constexpr ARITH_DEVICE ARITH_HOST simdl(bool a) : elts(a) {} -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE constexpr ARITH_DEVICE ARITH_HOST simdl(const nsimd::packl &elts) : elts(elts) {} #endif constexpr ARITH_DEVICE ARITH_HOST std::size_t size() const { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return sizeof(nsimd::packl) / sizeof(T); #else return 1; @@ -1089,7 +1295,7 @@ template struct simdl { constexpr ARITH_DEVICE ARITH_HOST bool operator[](const std::ptrdiff_t n) const { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE // TOOD: Introduce `to_mask` for simd/simdl return simd(nsimd::to_mask(elts))[n]; #else @@ -1127,7 +1333,11 @@ template struct simdl { } friend ARITH_DEVICE ARITH_HOST simdl operator^(const simdl &x, const simdl &y) { +#ifndef SIMD_DISABLE + return xorl(x.elts, y.elts); +#else return x.elts ^ y.elts; +#endif } friend ARITH_DEVICE ARITH_HOST simdl operator&(const bool a, const simdl &y) { @@ -1172,77 +1382,77 @@ template struct simdl { friend ARITH_DEVICE ARITH_HOST simdl operator==(const simdl &x, const simdl &y) { - return x.elts == y.elts; + return !(x != y); } friend ARITH_DEVICE ARITH_HOST simdl operator!=(const simdl &x, const simdl &y) { - return x.elts != y.elts; + return x ^ y; } friend ARITH_DEVICE ARITH_HOST simdl operator<(const simdl &x, const simdl &y) { - return x.elts < y.elts; + return !x & y; } friend ARITH_DEVICE ARITH_HOST simdl operator>(const simdl &x, const simdl &y) { - return x.elts > y.elts; + return y < x; } friend ARITH_DEVICE ARITH_HOST simdl operator<=(const simdl &x, const simdl &y) { - return x.elts <= y.elts; + return !(x > y); } friend ARITH_DEVICE ARITH_HOST simdl operator>=(const simdl &x, const simdl &y) { - return x.elts >= y.elts; + return !(x < y); } friend ARITH_DEVICE ARITH_HOST simdl operator==(const bool a, const simdl &y) { - return a == y.elts; + return simdl(a) == y; } friend ARITH_DEVICE ARITH_HOST simdl operator!=(const bool a, const simdl &y) { - return a != y.elts; + return simdl(a) != y; } friend ARITH_DEVICE ARITH_HOST simdl operator<(const bool a, const simdl &y) { - return a < y.elts; + return simdl(a) < y; } friend ARITH_DEVICE ARITH_HOST simdl operator>(const bool a, const simdl &y) { - return a > y.elts; + return simdl(a) > y; } friend ARITH_DEVICE ARITH_HOST simdl operator<=(const bool a, const simdl &y) { - return a <= y.elts; + return simdl(a) <= y; } friend ARITH_DEVICE ARITH_HOST simdl operator>=(const bool a, const simdl &y) { - return a >= y.elts; + return simdl(a) >= y; } friend ARITH_DEVICE ARITH_HOST simdl operator==(const simdl &x, const bool b) { - return x.elts == b; + return x == simdl(b); } friend ARITH_DEVICE ARITH_HOST simdl operator!=(const simdl &x, const bool b) { - return x.elts != b; + return x != simdl(b); } friend ARITH_DEVICE ARITH_HOST simdl operator<(const simdl &x, const bool b) { - return x.elts < b; + return x < simdl(b); } friend ARITH_DEVICE ARITH_HOST simdl operator>(const simdl &x, const bool b) { - return x.elts > b; + return x > simdl(b); } friend ARITH_DEVICE ARITH_HOST simdl operator<=(const simdl &x, const bool b) { - return x.elts <= b; + return x <= simdl(b); } friend ARITH_DEVICE ARITH_HOST simdl operator>=(const simdl &x, const bool b) { - return x.elts >= b; + return x >= simdl(b); } friend ARITH_DEVICE ARITH_HOST bool all(const simdl &x) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return all(x.elts); #else return x.elts; @@ -1250,7 +1460,7 @@ template struct simdl { } friend ARITH_DEVICE ARITH_HOST simdl andnot(const simdl &x, const simdl &y) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return andnotl(x.elts, y.elts); #else return x && !y; @@ -1258,7 +1468,7 @@ template struct simdl { } friend ARITH_DEVICE ARITH_HOST bool any(const simdl &x) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return any(x.elts); #else return x.elts; @@ -1267,7 +1477,7 @@ template struct simdl { friend ARITH_DEVICE ARITH_HOST simd if_else(const simdl &cond, const simd &x, const simd &y) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return if_else1(cond.elts, x.elts, y.elts); #else return cond.elts ? x.elts : y.elts; @@ -1288,7 +1498,7 @@ template struct simdl { friend ARITH_DEVICE ARITH_HOST simdl if_else(const simdl &cond, const simdl &x, const simdl &y) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE return if_else1(cond.elts, x.elts, y.elts); #else return cond.elts ? x.elts : y.elts; @@ -1308,14 +1518,14 @@ template struct simdl { } friend ARITH_DEVICE ARITH_HOST void storela(T *ptr, const simdl &x) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE storela(ptr, x.elts); #else *ptr = x.elts; #endif } friend ARITH_DEVICE ARITH_HOST void storelu(T *ptr, const simdl &x) { -#ifndef SIMD_CPU +#ifndef SIMD_DISABLE storelu(ptr, x.elts); #else *ptr = x.elts; diff --git a/BenchX/par/benchmark-carpet.par b/BenchX/par/benchmark-carpet.par index 431f8c410..72c80e4ba 100644 --- a/BenchX/par/benchmark-carpet.par +++ b/BenchX/par/benchmark-carpet.par @@ -6,8 +6,8 @@ ActiveThorns = " CartGrid3D CoordBase Formaline - InitBase IOUtil + InitBase ML_WaveToy MoL ReflectionSymmetry diff --git a/BenchX/par/benchmark-carpetx.par b/BenchX/par/benchmark-carpetx.par index c2830dde7..6ed9b3270 100644 --- a/BenchX/par/benchmark-carpetx.par +++ b/BenchX/par/benchmark-carpetx.par @@ -63,7 +63,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 0 -CarpetX::regrid_error_threshold = 2.0 +Driver::regrid_error_threshold = 2.0 ErrorEstimator::region_shape = "cube" ErrorEstimator::scale_by_resolution = yes diff --git a/BenchX/par/benchmark-z4c+asterx.par b/BenchX/par/benchmark-z4c+asterx.par index 8cca2261b..0bc057226 100644 --- a/BenchX/par/benchmark-z4c+asterx.par +++ b/BenchX/par/benchmark-z4c+asterx.par @@ -1,4 +1,5 @@ ActiveThorns = " + # SystemTopology ADMBase AsterSeeds AsterX @@ -7,7 +8,6 @@ ActiveThorns = " HydroBase IOUtil ODESolvers - # SystemTopology TOVSolver TimerReport TmunuBase diff --git a/BenchX/par/benchmark-z4c+grhydrox.par b/BenchX/par/benchmark-z4c+grhydrox.par index fde794a85..128117593 100644 --- a/BenchX/par/benchmark-z4c+grhydrox.par +++ b/BenchX/par/benchmark-z4c+grhydrox.par @@ -1,4 +1,5 @@ ActiveThorns = " + # SystemTopology ADMBase CarpetX ErrorEstimator @@ -8,7 +9,6 @@ ActiveThorns = " HydroBase IOUtil ODESolvers - # SystemTopology TimerReport TmunuBase Z4c @@ -66,7 +66,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 0 -CarpetX::regrid_error_threshold = 2.0 +Driver::regrid_error_threshold = 2.0 ErrorEstimator::region_shape = "cube" ErrorEstimator::scale_by_resolution = yes diff --git a/BenchX/par/benchmark-z4c.par b/BenchX/par/benchmark-z4c.par index 39ef13978..c04aba696 100644 --- a/BenchX/par/benchmark-z4c.par +++ b/BenchX/par/benchmark-z4c.par @@ -1,11 +1,11 @@ ActiveThorns = " + # SystemTopology ADMBaseX CarpetX ErrorEstimator Formaline IOUtil ODESolvers - # SystemTopology TimerReport TmunuBaseX Z4c @@ -63,7 +63,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 0 -CarpetX::regrid_error_threshold = 2.0 +Driver::regrid_error_threshold = 2.0 ErrorEstimator::region_shape = "cube" ErrorEstimator::scale_by_resolution = yes diff --git a/BoxInBox/interface.ccl b/BoxInBox/interface.ccl index 2839d7a4b..f481fa949 100644 --- a/BoxInBox/interface.ccl +++ b/BoxInBox/interface.ccl @@ -2,7 +2,7 @@ IMPLEMENTS: BoxInBox -INHERITS: CarpetX +INHERITS: CarpetXRegrid USES INCLUDE HEADER: defs.hxx USES INCLUDE HEADER: loop_device.hxx diff --git a/BoxInBox/schedule.ccl b/BoxInBox/schedule.ccl index ee59596ca..d13f4f5b3 100644 --- a/BoxInBox/schedule.ccl +++ b/BoxInBox/schedule.ccl @@ -19,7 +19,7 @@ SCHEDULE BoxInBox_Setup AS EstimateError AT postinitial READS: positions READS: radii READS: radiixyz - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error" SCHEDULE BoxInBox_Setup AS EstimateError AT poststep @@ -30,5 +30,5 @@ SCHEDULE BoxInBox_Setup AS EstimateError AT poststep READS: positions READS: radii READS: radiixyz - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error" diff --git a/BoxInBox/test/levels1.par b/BoxInBox/test/levels1.par index e9623d50d..9695869b8 100644 --- a/BoxInBox/test/levels1.par +++ b/BoxInBox/test/levels1.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -31,6 +32,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -39,7 +41,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/levels1/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/levels1/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/levels1/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/levels1/norms/carpetx-regrid_error.tsv b/BoxInBox/test/levels1/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/levels1/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/levels1/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/levels2.par b/BoxInBox/test/levels2.par index 493e1beb5..fe499253d 100644 --- a/BoxInBox/test/levels2.par +++ b/BoxInBox/test/levels2.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -32,6 +33,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -40,7 +42,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/levels2/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/levels2/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/levels2/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/levels2/norms/carpetx-regrid_error.tsv b/BoxInBox/test/levels2/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/levels2/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/levels2/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/levels20.par b/BoxInBox/test/levels20.par index b36677bd0..20cf0d446 100644 --- a/BoxInBox/test/levels20.par +++ b/BoxInBox/test/levels20.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -50,6 +51,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -58,7 +60,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/levels20/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/levels20/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/levels20/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/levels20/norms/carpetx-regrid_error.tsv b/BoxInBox/test/levels20/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/levels20/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/levels20/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/levels3.par b/BoxInBox/test/levels3.par index baf2c20f9..1e837d91d 100644 --- a/BoxInBox/test/levels3.par +++ b/BoxInBox/test/levels3.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -33,6 +34,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -41,7 +43,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/levels3/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/levels3/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/levels3/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/levels3/norms/carpetx-regrid_error.tsv b/BoxInBox/test/levels3/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/levels3/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/levels3/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/regions2.par b/BoxInBox/test/regions2.par index 5418a4c4f..e6c9b48ad 100644 --- a/BoxInBox/test/regions2.par +++ b/BoxInBox/test/regions2.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -42,6 +43,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -50,7 +52,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/regions2/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/regions2/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/regions2/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/regions2/norms/carpetx-regrid_error.tsv b/BoxInBox/test/regions2/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/regions2/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/regions2/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/regions3.par b/BoxInBox/test/regions3.par index 321d60eb8..bcf53e814 100644 --- a/BoxInBox/test/regions3.par +++ b/BoxInBox/test/regions3.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -53,6 +54,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -61,7 +63,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/regions3/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/regions3/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/regions3/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/regions3/norms/carpetx-regrid_error.tsv b/BoxInBox/test/regions3/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/regions3/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/regions3/norms/carpetxregrid-regrid_error.tsv diff --git a/BoxInBox/test/unigrid.par b/BoxInBox/test/unigrid.par index 1030b889b..45463bab7 100644 --- a/BoxInBox/test/unigrid.par +++ b/BoxInBox/test/unigrid.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil " @@ -30,6 +31,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -38,7 +40,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000000.x.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000000.x.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000000.y.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000000.y.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000000.z.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000000.z.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000010.x.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.x.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000010.x.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.x.tsv diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000010.y.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.y.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000010.y.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.y.tsv diff --git a/BoxInBox/test/unigrid/carpetx-regrid_error.it000010.z.tsv b/BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.z.tsv similarity index 100% rename from BoxInBox/test/unigrid/carpetx-regrid_error.it000010.z.tsv rename to BoxInBox/test/unigrid/carpetxregrid-regrid_error.it000010.z.tsv diff --git a/BoxInBox/test/unigrid/norms/carpetx-regrid_error.tsv b/BoxInBox/test/unigrid/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from BoxInBox/test/unigrid/norms/carpetx-regrid_error.tsv rename to BoxInBox/test/unigrid/norms/carpetxregrid-regrid_error.tsv diff --git a/CarpetX/configuration.ccl b/CarpetX/configuration.ccl index 5db400799..41757ba75 100644 --- a/CarpetX/configuration.ccl +++ b/CarpetX/configuration.ccl @@ -2,7 +2,7 @@ REQUIRES AMReX IOUtil MPI yaml_cpp zlib -REQUIRES Arith Loop +REQUIRES Arith CarpetXRegrid Loop OPTIONAL ADIOS2 { diff --git a/CarpetX/doc/documentation.tex b/CarpetX/doc/documentation.tex index 28a5b3f54..6e2d52266 100644 --- a/CarpetX/doc/documentation.tex +++ b/CarpetX/doc/documentation.tex @@ -126,6 +126,7 @@ % Add all definitions used in this documentation here \newcommand{\CarpetX}{\texttt{CarpetX}} +\newcommand{\CarpetXRegridError}{\texttt{CarpetXRegridError}} \newcommand{\Cactus}{\texttt{Cactus}} \newcommand{\AMReX}{\texttt{AMReX}} \newcommand{\ETK}{\texttt{Einstein Toolkit}} @@ -449,7 +450,7 @@ \section{Loops over grid elements} to the thorn's \texttt{configuration.ccl} file and % \begin{lstlisting}[language=Bash] - INHERITS: CarpetX + INHERITS: CarpetXRegrid USES INCLUDE HEADER: loop_device.hxx \end{lstlisting} % @@ -972,7 +973,7 @@ \subsection{Box-in-box AMR} \subsection{Advanced AMR} \label{sec:advanced_amr} -\CarpetX\space supports non-fixed (adaptive) mesh refinement. For cell level control of AMR, \CarpetX\space provides user with a cell centered and non-checkpointed grid function called \texttt{regrid\_error}. Users are responsible for filling this grid function with real value however they see fit. Once it is filled, the configuration parameter \texttt{CarpetX::regrid\_error\_threshold} controls regridding: If the values stored in \texttt{regrid\_error} are larger than what is set in \texttt{regrid\_error\_threshold}, the region gets refined. Additionally, the configuration parameter \texttt{CarpetX::regrid\_every} controls how many iterations should pass before checking if the error threshold has been exceeded. The parameter \texttt{CarpetX::max\_num\_levels} controls the maximum number of allowed refinement levels. +\CarpetX\space supports non-fixed (adaptive) mesh refinement. For cell level control of AMR, \CarpetXRegridError\space provides users with a cell centered and non-checkpointed grid function called \texttt{regrid\_error}. Users are responsible for filling this grid function with real value however they see fit. Once it is filled, the configuration parameter \texttt{CarpetX::regrid\_error\_threshold} controls regridding: If the values stored in \texttt{regrid\_error} are larger than what is set in \texttt{regrid\_error\_threshold}, the region gets refined. Additionally, the configuration parameter \texttt{CarpetX::regrid\_every} controls how many iterations should pass before checking if the error threshold has been exceeded. The parameter \texttt{CarpetX::max\_num\_levels} controls the maximum number of allowed refinement levels. Note that \CarpetX\space \textbf{does not} provide a ``standardized'' regrid error routine. This is because refinement criteria are highly specific to the problem being solved via AMR, and thus there is no one size fits all error criteria. This might seem inconvenient, but ultimately it allows for users to have higher degrees of customization in their AMR codes. For demonstration purposes, we shall now provide a routine that estimates the regrinding error as \todo{what? Provide a good starter example}. This implementation could be used as a starting point for codes that wish to use different error criteria in their AMR grids. @@ -999,14 +1000,14 @@ \subsection{Advanced AMR} { LANG: C READS: state(everywhere) - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error for regridding" SCHEDULE EstimateError AT poststep { LANG: C READS: state(everywhere) - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error for regridding" \end{lstlisting} diff --git a/CarpetX/interface.ccl b/CarpetX/interface.ccl index e4c4ea1a3..a1433268f 100644 --- a/CarpetX/interface.ccl +++ b/CarpetX/interface.ccl @@ -1,8 +1,6 @@ # Interface definition for thorn CarpetX -IMPLEMENTS: CarpetX - -INHERITS: IO +IMPLEMENTS: Driver USES INCLUDE HEADER: silo.hxx @@ -168,12 +166,3 @@ CCTK_INT FUNCTION DriverInterpolate( CCTK_INT ARRAY IN output_array_types, CCTK_POINTER ARRAY IN output_arrays) PROVIDES FUNCTION DriverInterpolate WITH CarpetX_DriverInterpolate LANGUAGE C - - - -PUBLIC: - -CCTK_REAL regrid_error TYPE=gf CENTERING={ccc} TAGS='checkpoint="no"' -{ - regrid_error -} "Regridding condition" diff --git a/CarpetX/par/brill-lindquist-checkpoint.par b/CarpetX/par/brill-lindquist-checkpoint.par index 7ae5391d1..b002f086b 100644 --- a/CarpetX/par/brill-lindquist-checkpoint.par +++ b/CarpetX/par/brill-lindquist-checkpoint.par @@ -29,9 +29,9 @@ CarpetX::ncells_x = 64 CarpetX::ncells_y = 64 CarpetX::ncells_z = 64 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no # CarpetX::reflection_x = yes # CarpetX::reflection_y = yes # CarpetX::reflection_z = yes diff --git a/CarpetX/par/brill-lindquist-read.par b/CarpetX/par/brill-lindquist-read.par index 3e31d7b07..faa20da2b 100644 --- a/CarpetX/par/brill-lindquist-read.par +++ b/CarpetX/par/brill-lindquist-read.par @@ -28,9 +28,9 @@ CarpetX::ncells_x = 64 CarpetX::ncells_y = 64 CarpetX::ncells_z = 64 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no # CarpetX::reflection_x = yes # CarpetX::reflection_y = yes # CarpetX::reflection_z = yes diff --git a/CarpetX/par/brill-lindquist-recover.par b/CarpetX/par/brill-lindquist-recover.par index 725ff0b8f..e7990183a 100644 --- a/CarpetX/par/brill-lindquist-recover.par +++ b/CarpetX/par/brill-lindquist-recover.par @@ -29,9 +29,9 @@ CarpetX::ncells_x = 64 CarpetX::ncells_y = 64 CarpetX::ncells_z = 64 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no # CarpetX::reflection_x = yes # CarpetX::reflection_y = yes # CarpetX::reflection_z = yes diff --git a/CarpetX/par/brill-lindquist-write.par b/CarpetX/par/brill-lindquist-write.par index a587c0fc0..72426410b 100644 --- a/CarpetX/par/brill-lindquist-write.par +++ b/CarpetX/par/brill-lindquist-write.par @@ -29,9 +29,9 @@ CarpetX::ncells_x = 64 CarpetX::ncells_y = 64 CarpetX::ncells_z = 64 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no # CarpetX::reflection_x = yes # CarpetX::reflection_y = yes # CarpetX::reflection_z = yes diff --git a/CarpetX/param.ccl b/CarpetX/param.ccl index 8addfe4e3..30d03e99f 100644 --- a/CarpetX/param.ccl +++ b/CarpetX/param.ccl @@ -69,18 +69,31 @@ CCTK_INT ncells_z "Number of grid cells" -BOOLEAN periodic_x "Periodic" +RESTRICTED: + +BOOLEAN periodic "Periodic boundary conditions" { -} no + "yes" :: "must be set for any periodic_x,y,z to be effective" + "no" :: "no periodicity" +} "no" -BOOLEAN periodic_y "Periodic" +BOOLEAN periodic_x "Periodic boundary conditions in x-direction" { -} no + "yes" :: "periodic in x direction, requires periodic=yes as well" + "no" :: "not periodic in x direction" +} "yes" -BOOLEAN periodic_z "Periodic" +BOOLEAN periodic_y "Periodic boundary conditions in y-direction" { -} no + "yes" :: "periodic in y direction, requires periodic=yes as well" + "no" :: "not periodic in y direction" +} "yes" +BOOLEAN periodic_z "Periodic boundary conditions in z-direction" +{ + "yes" :: "periodic in z direction, requires periodic=yes as well" + "no" :: "not periodic in z direction" +} "yes" PRIVATE: @@ -376,17 +389,15 @@ CCTK_INT max_num_levels "Maximum number of refinement levels" 1:* :: "" } 1 -RESTRICTED: +#TODO: move to CarpetRegridX CCTK_INT regrid_every "Regridding interval" STEERABLE=always { 0 :: "never" 1:* :: "every that many iterations" } 0 - -PRIVATE: - +#TODO: eliminate in favor of regrid_error being a true/false field CCTK_REAL regrid_error_threshold "Regridding error threshold" STEERABLE=always { 0.0:* :: "" diff --git a/CarpetX/schedule.ccl b/CarpetX/schedule.ccl index ef1e29a6d..7724baa8d 100644 --- a/CarpetX/schedule.ccl +++ b/CarpetX/schedule.ccl @@ -20,16 +20,6 @@ if (!CCTK_Equals(recover, "no") && *recover_file) -# Error estimation - -SCHEDULE CarpetX_InitError AT basegrid -{ - LANG: C - WRITES: regrid_error(everywhere) -} "Initialize regridding error to zero" - - - # I/O SCHEDULE CarpetX_CheckpointInitial AT cpinitial diff --git a/CarpetX/src/driver.cxx b/CarpetX/src/driver.cxx index 89aea53d1..aed7fe00f 100644 --- a/CarpetX/src/driver.cxx +++ b/CarpetX/src/driver.cxx @@ -133,8 +133,10 @@ std::array, 2> get_symmetries(const int patch) { is_interpatch[f][d] = is_interpatch_boundary[2 * d + f]; } const std::array, 2> is_periodic{{ - {{bool(periodic_x), bool(periodic_y), bool(periodic_z)}}, - {{bool(periodic_x), bool(periodic_y), bool(periodic_z)}}, + {{bool(periodic && periodic_x), bool(periodic && periodic_y), + bool(periodic && periodic_z)}}, + {{bool(periodic && periodic_x), bool(periodic && periodic_y), + bool(periodic && periodic_z)}}, }}; const array, 2> is_reflection{{ {{bool(reflection_x), bool(reflection_y), bool(reflection_z)}}, @@ -1562,7 +1564,7 @@ void CactusAmrCore::ErrorEst(const int level, amrex::TagBoxArray &tags, #pragma omp critical CCTK_VINFO("ErrorEst patch %d level %d", patch, level); - const int gi = CCTK_GroupIndex("CarpetX::regrid_error"); + const int gi = CCTK_GroupIndex("CarpetXRegrid::regrid_error"); assert(gi >= 0); const int vi = 0; const int tl = 0; diff --git a/CarpetX/src/make.code.defn b/CarpetX/src/make.code.defn index 03d90e5af..08471e01d 100644 --- a/CarpetX/src/make.code.defn +++ b/CarpetX/src/make.code.defn @@ -51,7 +51,6 @@ SRCS = \ prolongate_3d_rf2_impl_poly.cxx \ prolongate_3d_rf2_impl_poly_cons3lfb.cxx \ reduction.cxx \ - regrid_error.cxx \ schedule.cxx \ task_manager.cxx \ timer.cxx \ diff --git a/CarpetX/src/schedule.cxx b/CarpetX/src/schedule.cxx index 0770dc142..5f2bdd893 100644 --- a/CarpetX/src/schedule.cxx +++ b/CarpetX/src/schedule.cxx @@ -2278,7 +2278,7 @@ int SyncGroupsByDirI(const cGH *restrict cctkGH, int numgroups, CCTK_VINFO("SyncGroups %s", buf.str().c_str()); } - const int gi_regrid_error = CCTK_GroupIndex("CarpetX::regrid_error"); + const int gi_regrid_error = CCTK_GroupIndex("CarpetXRegrid::regrid_error"); assert(gi_regrid_error >= 0); vector groups; @@ -2655,7 +2655,7 @@ void Restrict(const cGH *cctkGH, int level, const vector &groups) { static Timer timer("Restrict"); Interval interval(timer); - const int gi_regrid_error = CCTK_GroupIndex("CarpetX::regrid_error"); + const int gi_regrid_error = CCTK_GroupIndex("CarpetXRegrid::regrid_error"); assert(gi_regrid_error >= 0); for (const auto &patchdata : ghext->patchdata) { diff --git a/CarpetX/src/timer.hxx b/CarpetX/src/timer.hxx index 8450e3cb8..80a094d5e 100644 --- a/CarpetX/src/timer.hxx +++ b/CarpetX/src/timer.hxx @@ -4,7 +4,7 @@ #include #ifdef __CUDACC__ -#include +#include #endif #include diff --git a/CarpetXRegrid/README b/CarpetXRegrid/README new file mode 100644 index 000000000..db7e81a67 --- /dev/null +++ b/CarpetXRegrid/README @@ -0,0 +1,11 @@ +Cactus Code Thorn CarpetXRegrid +Author(s) : Steven R. Brandt +Maintainer(s): Steven R. Brandt +Licence : LGPL +-------------------------------------------------------------------------- + +1. Purpose + +Provide an extra grid function, "regrid_error," to the CarpetX driver. +This grid function is used by CarpetX and AMReX to determine where to +refine the grid. diff --git a/CarpetXRegrid/configuration.ccl b/CarpetXRegrid/configuration.ccl new file mode 100644 index 000000000..f6e66747b --- /dev/null +++ b/CarpetXRegrid/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetXRegrid +REQUIRES AMReX Arith Loop + +PROVIDES CarpetXRegrid +{ +} diff --git a/CarpetXRegrid/doc/documentation.tex b/CarpetXRegrid/doc/documentation.tex new file mode 100644 index 000000000..f826a908b --- /dev/null +++ b/CarpetXRegrid/doc/documentation.tex @@ -0,0 +1,210 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header$ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevant thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date, etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be separated with a \\ or a comma. +% - You can define your own macros, but they must appear after +% the START CACTUS THORNGUIDE line, and must not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphicx package. +% More specifically, with the "\includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us to create a PDF version of the ThornGuide +% via pdflatex. +% - References should be included with the latex "\bibitem" command. +% - Use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - Do not use \appendix, instead include any appendices you need as +% standard sections. +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header$ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/latex/cactus} + +\begin{document} + +% The author of the documentation +\author{Steven R. Brandt \textless sbrandt@cct.lsu.edu\textgreater \\ + Roland Haas \textless rhaas@illinois.edu\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{CarpetXRegrid} + +% the date your document was last changed, if your document is in CVS, +% please use: +% \date{$ $Date$ $} +% when using git instead record the commit ID: +% \date{\gitrevision{}} +\date{July 30 2024} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + +Provide a grid function, \code{regrid\_error}, to the \code{CarpetX} driver. +This grid function is used by \code{CarpetX} and \code{AMReX} to determine +where to refine the grid. + +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +\code{AMReX}~\cite{CarpetX_CarpetXRegrid_AMReX_JOSS} and thus \code{CarpetX} +implement Berger-Oliger~\cite{CarpetX_CarpetXRegrid_Berger:1984zza} type +structured mesh refinement. Grid \emph{cells} are tagged for refinement in +\code{CarpetX} using the overloaded virtual function \code{AmrCore::ErrorEst}. + +This thorn, in combination with \code{CarpetX}, provides a covenient way for +\code{Cactus} thorns to label cells needed refinement via a cell centered +grid function \code{regrid\_error} whose value controls if a cell is marked +for refinement or not. + +A cell is marked for refinement if the value found in \code{regrid\_error} +exceeds the threshold in parameter \code{CarpetX::regrid\_error\_threshold} +and marked as not requiring refinement otherwise. + +A client thorn wishing to control refinement should schedule a function in +schedule bins \code{POSTINITIAL} and \code{POSTSTEP}. See thorn +\code{ErrorEstimator} for an example. + +\section{Numerical Implementation} + +This thorn only provides access to the tagging grid function +\code{regrid\_error} and initializes it to zero at the beginning of the +simulation. + +\section{Using This Thorn} + +To use this thorn, make sure to \texttt{inherit} from \code{CarpetXRegrid} to +gain access to the public grid function \code{regrid\_error}. +A client thorn wishing to control refinement should then schedule a function in +schedule bins \code{POSTINITIAL} and \code{POSTSTEP} which should loop over +the \texttt{interior} of cell centered grid function \code{regrid\_error} +marking each cell for refinement or no refinement as needed. See thorn +\code{ErrorEstimator} for an example. + +In the future, to allow multiple independent regridding criteria to contribute +to mesh refinement, grid function \code{regrid\_error} may be interpreted as a +boolean flag with true / false indicated by values of $1.0$ and $0.0$ (and all +other values considered invalid). In the future this will require that a thorn +should never reset non-zero value back to zero. + +\subsection{Obtaining This Thorn} + +This thorn is included in the \code{CarpetX} arrangement which is part of the +Einstein Toolkit. + +\subsection{Special Behaviour} + +This thorn will initialize the error estimator grid function +\code{regrid\_error} to zero at the beginning of a simulation but does not +change or use its values otherwise. + +In the future it may reset the error estimator grid function before client +thorns mark cells for refinement. + +\subsection{Interaction With Other Thorns} + +This thorn only provides access to \code{regrid\_error}, while the actual +regrid happens inside of \code{CarpetX} and \code{AMReX}. + +\subsection{Examples} + +Please consult thorn \code{ErrorEstimator} for an example on how to use this +thorn. + +\begin{verbatim} +extern "C" void MyRegrid_EstError(CCTK_ARGUMENTS) { + DECLARE_CCTK_ARGUMENTSX_MyRegrid_EstError; + DECLARE_CCTK_PARAMETERS; + + grid.loop_all_device<1, 1, 1>( + grid.nghostzones, + [=] CCTK_DEVICE(const Loop::PointDesc &p) + CCTK_ATTRIBUTE_ALWAYS_INLINE { + regrid_error(p.I) = fabs(p.x) < 42. ? 1.0 : 0.0; + } + ); +} +\end{verbatim} + +\subsection{Support and Feedback} + +For questions and bug reports please use the Einstein Toolkit users mailing +list \url{users@einsteintoolkit.org} and bug tracker +\url{https://trac.einsteintoolkit.org}. + +\begin{thebibliography}{9} +\bibitem{CarpetX_CarpetXRegrid_AMReX_JOSS} Zhang, W., Almgren, A., Beckner, V., Bell, J., Blaschke, J., Chan, C., Day, M., Friesen, B., Gott, K., Graves, D., Katz, M., Myers, A., Nguyen, T., Nonaka, A., Rosso, M., Williams, S. \& Zingale, M. AMReX: a framework for block-structured adaptive mesh refinement. {\em Journal Of Open Source Software}. \textbf{4}, 1370 (2019,5), https://doi.org/10.21105/joss.01370 +\bibitem{CarpetX_CarpetXRegrid_Berger:1984zza} M.~J.~Berger and J.~Oliger, ``Adaptive Mesh Refinement for Hyperbolic Partial Differential Equations,'' J. Comput. Phys. \textbf{53} (1984), 484 doi:10.1016/0021-9991(84)90073-1 +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/CarpetXRegrid/interface.ccl b/CarpetXRegrid/interface.ccl new file mode 100644 index 000000000..553c446bb --- /dev/null +++ b/CarpetXRegrid/interface.ccl @@ -0,0 +1,9 @@ +# Interface definition for thorn CarpetXRegrid +IMPLEMENTS: CarpetXRegrid + +PUBLIC: + +CCTK_REAL regrid_error TYPE=gf CENTERING={ccc} TAGS='checkpoint="no"' +{ + regrid_error +} "Regridding condition" diff --git a/CarpetXRegrid/param.ccl b/CarpetXRegrid/param.ccl new file mode 100644 index 000000000..fa1f9f566 --- /dev/null +++ b/CarpetXRegrid/param.ccl @@ -0,0 +1 @@ +# Parameter definitions for thorn CarpetXRegrid diff --git a/CarpetXRegrid/schedule.ccl b/CarpetXRegrid/schedule.ccl new file mode 100644 index 000000000..778ec454c --- /dev/null +++ b/CarpetXRegrid/schedule.ccl @@ -0,0 +1,6 @@ +# Schedule definitions for thorn CarpetXRegrid +SCHEDULE CarpetXRegrid_InitError AT basegrid +{ + LANG: C + WRITES: CarpetXRegrid::regrid_error(everywhere) +} "Initialize regridding error to zero" diff --git a/CarpetXRegrid/src/make.code.defn b/CarpetXRegrid/src/make.code.defn new file mode 100644 index 000000000..583586e0c --- /dev/null +++ b/CarpetXRegrid/src/make.code.defn @@ -0,0 +1,7 @@ +# Main make.code.defn file for thorn CarpetXRegrid + +# Source files in this directory +SRCS = regrid_error.cxx + +# Subdirectories containing source files +SUBDIRS = diff --git a/CarpetX/src/regrid_error.cxx b/CarpetXRegrid/src/regrid_error.cxx similarity index 55% rename from CarpetX/src/regrid_error.cxx rename to CarpetXRegrid/src/regrid_error.cxx index 39a7bb09c..cb75eaaa7 100644 --- a/CarpetX/src/regrid_error.cxx +++ b/CarpetXRegrid/src/regrid_error.cxx @@ -1,21 +1,20 @@ -#include "schedule.hxx" - #include #include #include #include -namespace CarpetX { +namespace CarpetXRegrid { +using namespace std; -extern "C" void CarpetX_InitError(CCTK_ARGUMENTS) { - DECLARE_CCTK_ARGUMENTSX_CarpetX_InitError; +extern "C" void CarpetXRegrid_InitError(CCTK_ARGUMENTS) { + DECLARE_CCTK_ARGUMENTSX_CarpetXRegrid_InitError; DECLARE_CCTK_PARAMETERS; - grid.loop_device<1, 1, 1, where_t::everywhere>( + grid.loop_all_device<1, 1, 1>( grid.nghostzones, [=] CCTK_DEVICE(const Loop::PointDesc &p) CCTK_ATTRIBUTE_ALWAYS_INLINE { regrid_error(p.I) = 0; }); } -} // namespace CarpetX +} // namespace CarpetXRegrid diff --git a/ErrorEstimator/interface.ccl b/ErrorEstimator/interface.ccl index 08e82c25c..e10c34907 100644 --- a/ErrorEstimator/interface.ccl +++ b/ErrorEstimator/interface.ccl @@ -2,7 +2,7 @@ IMPLEMENTS: ErrorEstimator -INHERITS: CarpetX +INHERITS: CarpetXRegrid diff --git a/ErrorEstimator/schedule.ccl b/ErrorEstimator/schedule.ccl index 7c7244946..c61a116fe 100644 --- a/ErrorEstimator/schedule.ccl +++ b/ErrorEstimator/schedule.ccl @@ -5,11 +5,11 @@ SCHEDULE ErrorEstimator_Estimate AS EstimateError AT postinitial { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error" SCHEDULE ErrorEstimator_Estimate AS EstimateError AT poststep { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Estimate error" diff --git a/FluxWaveToyX/par/standing.par b/FluxWaveToyX/par/standing.par index 17fd186ad..33992ae61 100644 --- a/FluxWaveToyX/par/standing.par +++ b/FluxWaveToyX/par/standing.par @@ -13,9 +13,10 @@ Cactus::presync_mode = "mixed-error" CarpetX::poison_undefined_values = no -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 diff --git a/FluxWaveToyX/test/radiative.par b/FluxWaveToyX/test/radiative.par index 5adc0136f..887c447e5 100644 --- a/FluxWaveToyX/test/radiative.par +++ b/FluxWaveToyX/test/radiative.par @@ -1,5 +1,6 @@ ActiveThorns = " CarpetX + CarpetXRegrid FluxWaveToyX IOUtil ODESolvers @@ -32,6 +33,7 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/FluxWaveToyX/test/radiative/norms/carpetx-regrid_error.tsv b/FluxWaveToyX/test/radiative/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from FluxWaveToyX/test/radiative/norms/carpetx-regrid_error.tsv rename to FluxWaveToyX/test/radiative/norms/carpetxregrid-regrid_error.tsv diff --git a/FluxWaveToyX/test/reflecting.par b/FluxWaveToyX/test/reflecting.par index 1d1b5196e..63da2ecb8 100644 --- a/FluxWaveToyX/test/reflecting.par +++ b/FluxWaveToyX/test/reflecting.par @@ -1,5 +1,6 @@ ActiveThorns = " CarpetX + CarpetXRegrid FluxWaveToyX IOUtil ODESolvers @@ -31,6 +32,7 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/FluxWaveToyX/test/reflecting/norms/carpetx-regrid_error.tsv b/FluxWaveToyX/test/reflecting/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from FluxWaveToyX/test/reflecting/norms/carpetx-regrid_error.tsv rename to FluxWaveToyX/test/reflecting/norms/carpetxregrid-regrid_error.tsv diff --git a/FluxWaveToyX/test/standing.par b/FluxWaveToyX/test/standing.par index a6b1f1728..a9ff8fc62 100644 --- a/FluxWaveToyX/test/standing.par +++ b/FluxWaveToyX/test/standing.par @@ -1,5 +1,6 @@ ActiveThorns = " CarpetX + CarpetXRegrid FluxWaveToyX IOUtil ODESolvers @@ -14,9 +15,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::cctk_itlast = 10 @@ -26,6 +28,7 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/FluxWaveToyX/test/standing/norms/carpetx-regrid_error.tsv b/FluxWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from FluxWaveToyX/test/standing/norms/carpetx-regrid_error.tsv rename to FluxWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv diff --git a/MovingBoxToy/par/circle.par b/MovingBoxToy/par/circle.par index f41454fc1..ba6c758c7 100644 --- a/MovingBoxToy/par/circle.par +++ b/MovingBoxToy/par/circle.par @@ -1,9 +1,9 @@ ActiveThorns = " - MovingBoxToy BoxInBox CarpetX CoordinatesX IOUtil + MovingBoxToy " Cactus::cctk_show_schedule = no @@ -52,7 +52,7 @@ CarpetX::out_norm_vars = "all" CarpetX::out_norm_omit_unstable = yes CarpetX::out_silo_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/MovingBoxToy/test/circle.par b/MovingBoxToy/test/circle.par index ccdcd0b6e..bc19fafb2 100644 --- a/MovingBoxToy/test/circle.par +++ b/MovingBoxToy/test/circle.par @@ -1,9 +1,9 @@ ActiveThorns = " - MovingBoxToy BoxInBox CarpetX CoordinatesX IOUtil + MovingBoxToy " Cactus::cctk_show_schedule = no @@ -45,6 +45,7 @@ Cactus::cctk_itlast = 5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -53,7 +54,7 @@ CarpetX::out_norm_omit_unstable = yes CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000000.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000000.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000000.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000000.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000000.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000000.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000000.z.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000001.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000001.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000001.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000001.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000001.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000001.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000001.z.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000002.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000002.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000002.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000002.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000002.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000002.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000002.z.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000003.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000003.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000003.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000003.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000003.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000003.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000003.z.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000004.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000004.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000004.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000004.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000004.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000004.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000004.z.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000005.x.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.x.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000005.x.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.x.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000005.y.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.y.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000005.y.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.y.tsv diff --git a/MovingBoxToy/test/circle/carpetx-regrid_error.it000005.z.tsv b/MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.z.tsv similarity index 100% rename from MovingBoxToy/test/circle/carpetx-regrid_error.it000005.z.tsv rename to MovingBoxToy/test/circle/carpetxregrid-regrid_error.it000005.z.tsv diff --git a/MovingBoxToy/test/circle/norms/carpetx-regrid_error.tsv b/MovingBoxToy/test/circle/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from MovingBoxToy/test/circle/norms/carpetx-regrid_error.tsv rename to MovingBoxToy/test/circle/norms/carpetxregrid-regrid_error.tsv diff --git a/PoissonX/par/poissonx-fd4.par b/PoissonX/par/poissonx-fd4.par index fea9f23b0..44b40bf3d 100644 --- a/PoissonX/par/poissonx-fd4.par +++ b/PoissonX/par/poissonx-fd4.par @@ -27,9 +27,9 @@ CarpetX::ncells_x = 16 CarpetX::ncells_y = 16 CarpetX::ncells_z = 16 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::ghost_size = 2 diff --git a/PoissonX/par/poissonx-logo.par b/PoissonX/par/poissonx-logo.par index 382d13bca..4d1449257 100644 --- a/PoissonX/par/poissonx-logo.par +++ b/PoissonX/par/poissonx-logo.par @@ -26,9 +26,9 @@ CarpetX::ncells_x = 64 CarpetX::ncells_y = 64 CarpetX::ncells_z = 64 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::ghost_size = 1 diff --git a/PoissonX/par/poissonx-rl2.par b/PoissonX/par/poissonx-rl2.par index 7ba049dee..ed6f5896e 100644 --- a/PoissonX/par/poissonx-rl2.par +++ b/PoissonX/par/poissonx-rl2.par @@ -28,15 +28,15 @@ CarpetX::ncells_x = 16 CarpetX::ncells_y = 16 CarpetX::ncells_z = 16 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::ghost_size = 1 CarpetX::max_num_levels = 2 CarpetX::regrid_every = 0 -CarpetX::regrid_error_threshold = 2.5 / 2.0 +Driver::regrid_error_threshold = 2.5 / 2.0 CarpetX::prolongation_type = "ddf" CarpetX::prolongation_order = 1 diff --git a/PoissonX/par/poissonx-rl4.par b/PoissonX/par/poissonx-rl4.par index f00e55de3..a736563a1 100644 --- a/PoissonX/par/poissonx-rl4.par +++ b/PoissonX/par/poissonx-rl4.par @@ -28,15 +28,15 @@ CarpetX::ncells_x = 16 CarpetX::ncells_y = 16 CarpetX::ncells_z = 16 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::ghost_size = 1 CarpetX::max_num_levels = 4 CarpetX::regrid_every = 0 -CarpetX::regrid_error_threshold = 2.5 / 2.0 +Driver::regrid_error_threshold = 2.5 / 2.0 CarpetX::prolongation_type = "ddf" CarpetX::prolongation_order = 1 diff --git a/PoissonX/par/poissonx.par b/PoissonX/par/poissonx.par index ffb7fe9ab..66c9bc013 100644 --- a/PoissonX/par/poissonx.par +++ b/PoissonX/par/poissonx.par @@ -27,9 +27,9 @@ CarpetX::ncells_x = 16 CarpetX::ncells_y = 16 CarpetX::ncells_z = 16 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::ghost_size = 1 diff --git a/SIMDWaveToyX/par/standing.par b/SIMDWaveToyX/par/standing.par index 219f6ca89..baf5da08b 100644 --- a/SIMDWaveToyX/par/standing.par +++ b/SIMDWaveToyX/par/standing.par @@ -13,9 +13,10 @@ Cactus::presync_mode = "mixed-error" CarpetX::poison_undefined_values = no -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 diff --git a/SIMDWaveToyX/test/standing.par b/SIMDWaveToyX/test/standing.par index b18695e5a..f614dc657 100644 --- a/SIMDWaveToyX/test/standing.par +++ b/SIMDWaveToyX/test/standing.par @@ -1,5 +1,6 @@ ActiveThorns = " CarpetX + CarpetXRegrid IOUtil ODESolvers SIMDWaveToyX @@ -14,9 +15,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::cctk_itlast = 10 @@ -26,6 +28,7 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/SIMDWaveToyX/test/standing/norms/carpetx-regrid_error.tsv b/SIMDWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from SIMDWaveToyX/test/standing/norms/carpetx-regrid_error.tsv rename to SIMDWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv diff --git a/SpacetimeWaveToyX/par/standing.par b/SpacetimeWaveToyX/par/standing.par index b5f24dbd5..55ae25ff8 100644 --- a/SpacetimeWaveToyX/par/standing.par +++ b/SpacetimeWaveToyX/par/standing.par @@ -12,9 +12,10 @@ Cactus::presync_mode = "mixed-error" CarpetX::poison_undefined_values = no -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 diff --git a/SpacetimeWaveToyX/test/standing.par b/SpacetimeWaveToyX/test/standing.par index 5bc0e9dc3..1135d15b4 100644 --- a/SpacetimeWaveToyX/test/standing.par +++ b/SpacetimeWaveToyX/test/standing.par @@ -15,9 +15,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 @@ -26,6 +27,8 @@ SpacetimeWaveToyX::initial_condition = "standing wave" IO::out_dir = $parfile IO::out_every = $out_every +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_norm_vars = "all" diff --git a/SpacetimeWaveToyX/test/standing/norms/carpetx-regrid_error.tsv b/SpacetimeWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from SpacetimeWaveToyX/test/standing/norms/carpetx-regrid_error.tsv rename to SpacetimeWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv diff --git a/SpacetimeWaveToyX/test/standing/standing.par b/SpacetimeWaveToyX/test/standing/standing.par deleted file mode 100644 index 0cd26083e..000000000 --- a/SpacetimeWaveToyX/test/standing/standing.par +++ /dev/null @@ -1,49 +0,0 @@ -ActiveThorns = " - CarpetX - IOUtil - SpacetimeWaveToyX -" - -$out_every = 16 - -Cactus::cctk_show_schedule = no -Cactus::presync_mode = "mixed-error" - -CarpetX::poison_undefined_values = yes - -CarpetX::ncells_x = 8 -CarpetX::ncells_y = 8 -CarpetX::ncells_z = 8 - -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes - -Cactus::terminate = "time" -Cactus::cctk_final_time = 1.0 - -SpacetimeWaveToyX::initial_condition = "standing wave" - -IO::out_dir = $parfile -IO::out_every = $out_every - -CarpetX::out_metadata = no -CarpetX::out_norm_vars = "all" -CarpetX::out_norm_omit_unstable = yes - -CarpetX::out_tsv_vars = " - SpacetimeWaveToyX::ustate - SpacetimeWaveToyX::ftstate - SpacetimeWaveToyX::fxstate - SpacetimeWaveToyX::fystate - SpacetimeWaveToyX::fzstate - SpacetimeWaveToyX::curlfx - SpacetimeWaveToyX::curlfy - SpacetimeWaveToyX::curlfz - SpacetimeWaveToyX::energy - SpacetimeWaveToyX::uerror - SpacetimeWaveToyX::fterror - SpacetimeWaveToyX::fxerror - SpacetimeWaveToyX::fyerror - SpacetimeWaveToyX::fzerror -" diff --git a/StaggeredWaveToyX/par/standing.par b/StaggeredWaveToyX/par/standing.par index b1a2ca2ae..8f38ca903 100644 --- a/StaggeredWaveToyX/par/standing.par +++ b/StaggeredWaveToyX/par/standing.par @@ -14,9 +14,10 @@ Cactus::presync_mode = "mixed-error" CarpetX::verbose = no CarpetX::poison_undefined_values = no -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 diff --git a/StaggeredWaveToyX/test/standing.par b/StaggeredWaveToyX/test/standing.par index 59086a9a2..202ab61f9 100644 --- a/StaggeredWaveToyX/test/standing.par +++ b/StaggeredWaveToyX/test/standing.par @@ -17,9 +17,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::cctk_itlast = 10 @@ -29,6 +30,8 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = $out_every +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_norm_vars = "all" diff --git a/StaggeredWaveToyX/test/standing/norms/carpetx-regrid_error.tsv b/StaggeredWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from StaggeredWaveToyX/test/standing/norms/carpetx-regrid_error.tsv rename to StaggeredWaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv diff --git a/StaggeredWaveToyX/test/standing/standing.par b/StaggeredWaveToyX/test/standing/standing.par deleted file mode 100644 index c7b9a407d..000000000 --- a/StaggeredWaveToyX/test/standing/standing.par +++ /dev/null @@ -1,53 +0,0 @@ -ActiveThorns = " - CarpetX - IOUtil - ODESolvers - StaggeredWaveToyX -" - -$out_every = 16 - -Cactus::cctk_show_schedule = no -Cactus::presync_mode = "mixed-error" - -CarpetX::poison_undefined_values = yes - -CarpetX::ncells_x = 8 -CarpetX::ncells_y = 8 -CarpetX::ncells_z = 8 - -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes - -Cactus::cctk_itlast = 10 - -StaggeredWaveToyX::initial_condition = "standing wave" - -ODESolvers::method = "RK3" - -IO::out_dir = $parfile -IO::out_every = $out_every - -CarpetX::out_metadata = no -CarpetX::out_norm_vars = "all" -CarpetX::out_norm_omit_unstable = yes - -CarpetX::out_tsv_vars = " - StaggeredWaveToyX::ustate - StaggeredWaveToyX::fxstate - StaggeredWaveToyX::fystate - StaggeredWaveToyX::fzstate - StaggeredWaveToyX::urhs - StaggeredWaveToyX::fxrhs - StaggeredWaveToyX::fyrhs - StaggeredWaveToyX::fzrhs - StaggeredWaveToyX::curlfx - StaggeredWaveToyX::curlfy - StaggeredWaveToyX::curlfz - StaggeredWaveToyX::energy - StaggeredWaveToyX::uerror - StaggeredWaveToyX::fxerror - StaggeredWaveToyX::fyerror - StaggeredWaveToyX::fzerror -" diff --git a/TestArrayGroup/test/testarraygroup.par b/TestArrayGroup/test/testarraygroup.par index 89ba45c3b..5739f7c42 100644 --- a/TestArrayGroup/test/testarraygroup.par +++ b/TestArrayGroup/test/testarraygroup.par @@ -21,8 +21,9 @@ CarpetX::max_num_levels = $nlevels CarpetX::dtfac = 0.5 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = " diff --git a/TestBoundaries/par/test_boundaries.par b/TestBoundaries/par/test_boundaries.par index 4c1b16c20..e5270bbf3 100644 --- a/TestBoundaries/par/test_boundaries.par +++ b/TestBoundaries/par/test_boundaries.par @@ -1,5 +1,6 @@ ActiveThorns = " CarpetX + CarpetXRegrid IOUtil TestBoundaries " diff --git a/TestBoxInBox/test/moving.par b/TestBoxInBox/test/moving.par index 204da46bc..748f29f6d 100644 --- a/TestBoxInBox/test/moving.par +++ b/TestBoxInBox/test/moving.par @@ -1,6 +1,7 @@ ActiveThorns = " BoxInBox CarpetX + CarpetXRegrid CoordinatesX IOUtil TestBoxInBox @@ -33,6 +34,7 @@ Cactus::cctk_itlast = 10 IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -40,7 +42,7 @@ CarpetX::out_norm_vars = "all" CarpetX::out_norm_omit_unstable = yes CarpetX::out_tsv_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error CoordinatesX::vertex_coords CoordinatesX::cell_coords " diff --git a/TestDerivs/interface.ccl b/TestDerivs/interface.ccl index f3b757fa7..b0b8ab0f1 100644 --- a/TestDerivs/interface.ccl +++ b/TestDerivs/interface.ccl @@ -1,7 +1,7 @@ # Interface definition for thorn TestDerivs IMPLEMENTS: TestDerivs -INHERITS: CarpetX +INHERITS: CarpetXRegrid USES INCLUDE HEADER: defs.hxx USES INCLUDE HEADER: loop_device.hxx diff --git a/TestDerivs/schedule.ccl b/TestDerivs/schedule.ccl index caa8cbd62..1d583f928 100644 --- a/TestDerivs/schedule.ccl +++ b/TestDerivs/schedule.ccl @@ -7,7 +7,7 @@ STORAGE: ddchi SCHEDULE TestDerivs_SetError AT postinitial { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Set up test grid" SCHEDULE TestDerivs_Set AT initial diff --git a/TestDerivs/src/test.cxx b/TestDerivs/src/test.cxx index 43e855a26..9a84b5bf4 100644 --- a/TestDerivs/src/test.cxx +++ b/TestDerivs/src/test.cxx @@ -50,7 +50,8 @@ extern "C" void TestDerivs_Set(CCTK_ARGUMENTS) { const CCTK_REAL y0 = p.y; const CCTK_REAL z0 = p.z; vreal u0; - poly(kxx, kxy, kyz, Arith::cos(x0), std::sin(y0), std::sin(z0), u0); + using std::sin, std::cos; + poly(kxx, kxy, kyz, cos(x0), sin(y0), sin(z0), u0); chi.store(mask, p.I, u0); }); @@ -133,12 +134,13 @@ extern "C" void TestDerivs_CalcDerivs(CCTK_ARGUMENTS) { #if CCTK_DEBUG grid.loop_int_device<0, 0, 0>( grid.nghostzones, [=] ARITH_DEVICE(const PointDesc &p) ARITH_INLINE { - const auto sinx = std::sin(p.x); - const auto siny = std::sin(p.y); - const auto sinz = std::sin(p.z); - const auto cosx = std::cos(p.x); - const auto cosy = std::cos(p.y); - const auto cosz = std::cos(p.z); + using std::cos, std::sin; + const auto sinx = sin(p.x); + const auto siny = sin(p.y); + const auto sinz = sin(p.z); + const auto cosx = cos(p.x); + const auto cosy = cos(p.y); + const auto cosz = cos(p.z); const auto dxxdchi = -2 * kxx * cosx * cosx + 2 * kxx * sinx * sinx - kxy * cosx * siny; const auto dxydchi = -kxy * cosy * sinx; diff --git a/TestDerivs/test/derivs-2nd-order.par b/TestDerivs/test/derivs-2nd-order.par index 1e5e4b8b8..8e2a4822b 100644 --- a/TestDerivs/test/derivs-2nd-order.par +++ b/TestDerivs/test/derivs-2nd-order.par @@ -25,9 +25,10 @@ CarpetX::xmax = 0.1234567+$pi CarpetX::ymax = 0.2345678+$pi CarpetX::zmax = 0.3456789+$pi -CarpetX::periodic_x = "yes" -CarpetX::periodic_y = "yes" -CarpetX::periodic_z = "yes" +Driver::periodic = "yes" +Driver::periodic_x = "yes" +Driver::periodic_y = "yes" +Driver::periodic_z = "yes" CarpetX::ncells_x = $ncells CarpetX::ncells_y = $ncells @@ -39,7 +40,7 @@ CarpetX::blocking_factor_z = $blocking_factor CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestDerivs/test/derivs-4th-order.par b/TestDerivs/test/derivs-4th-order.par index 4110188f6..efb67cf0f 100644 --- a/TestDerivs/test/derivs-4th-order.par +++ b/TestDerivs/test/derivs-4th-order.par @@ -25,9 +25,10 @@ CarpetX::xmax = 0.1234567+$pi CarpetX::ymax = 0.2345678+$pi CarpetX::zmax = 0.3456789+$pi -CarpetX::periodic_x = "yes" -CarpetX::periodic_y = "yes" -CarpetX::periodic_z = "yes" +Driver::periodic = "yes" +Driver::periodic_x = "yes" +Driver::periodic_y = "yes" +Driver::periodic_z = "yes" CarpetX::ncells_x = $ncells CarpetX::ncells_y = $ncells @@ -39,7 +40,7 @@ CarpetX::blocking_factor_z = $blocking_factor CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestDerivs/test/derivs-6th-order.par b/TestDerivs/test/derivs-6th-order.par index e5ab0553a..48f7f30a5 100644 --- a/TestDerivs/test/derivs-6th-order.par +++ b/TestDerivs/test/derivs-6th-order.par @@ -25,9 +25,10 @@ CarpetX::xmax = 0.1234567+$pi CarpetX::ymax = 0.2345678+$pi CarpetX::zmax = 0.3456789+$pi -CarpetX::periodic_x = "yes" -CarpetX::periodic_y = "yes" -CarpetX::periodic_z = "yes" +Driver::periodic = "yes" +Driver::periodic_x = "yes" +Driver::periodic_y = "yes" +Driver::periodic_z = "yes" CarpetX::ncells_x = $ncells CarpetX::ncells_y = $ncells @@ -39,7 +40,7 @@ CarpetX::blocking_factor_z = $blocking_factor CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 @@ -53,7 +54,7 @@ TestDerivs::kxy = 1.0 TestDerivs::kyz = 1.0 IO::out_dir = $parfile -IO::out_fileinfo = "none" +IO::out_fileinfo = "axis labels" IO::parfile_write = "no" IO::out_every = 1 diff --git a/TestInterpolate/test/interpolate.par b/TestInterpolate/test/interpolate.par index e9038e00c..d9a50978c 100644 --- a/TestInterpolate/test/interpolate.par +++ b/TestInterpolate/test/interpolate.par @@ -31,12 +31,12 @@ CarpetX::ncells_z = $ncells CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 16 -CarpetX::regrid_error_threshold = 5.0 +Driver::regrid_error_threshold = 5.0 CarpetX::prolongation_type = "ddf" IO::out_dir = $parfile -IO::out_fileinfo = "none" +IO::out_fileinfo = "axis labels" IO::parfile_write = "no" IO::out_every = 1 diff --git a/TestLoopX/interface.ccl b/TestLoopX/interface.ccl index 8bf2c7784..1ca8ace82 100644 --- a/TestLoopX/interface.ccl +++ b/TestLoopX/interface.ccl @@ -1,8 +1,6 @@ # Interface definition for thorn TestLoopX IMPLEMENTS: TestLoopX -INHERITS: CarpetX - USES INCLUDE HEADER: loop.hxx USES INCLUDE HEADER: loop_device.hxx diff --git a/TestLoopX/test/testloopx_outermost_interior.par b/TestLoopX/test/testloopx_outermost_interior.par index 9560d6ea9..601add74f 100644 --- a/TestLoopX/test/testloopx_outermost_interior.par +++ b/TestLoopX/test/testloopx_outermost_interior.par @@ -19,9 +19,10 @@ CarpetX::xmax = +10 CarpetX::ymax = +10 CarpetX::zmax = +10 -CarpetX::periodic_x = "yes" -CarpetX::periodic_y = "yes" -CarpetX::periodic_z = "yes" +Driver::periodic = "yes" +Driver::periodic_x = "yes" +Driver::periodic_y = "yes" +Driver::periodic_z = "yes" CarpetX::ncells_x = 40 CarpetX::ncells_y = 40 @@ -29,7 +30,7 @@ CarpetX::ncells_z = 40 CarpetX::max_num_levels = 1 CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 @@ -38,10 +39,11 @@ CarpetX::prolongation_order = 5 CarpetX::ghost_size = 3 IO::out_dir = $parfile -IO::out_fileinfo = "none" -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_tsv_vars = " TestLoopX::testloop_gf " diff --git a/TestNorms/interface.ccl b/TestNorms/interface.ccl index fd4cbfe08..29d87ff0a 100644 --- a/TestNorms/interface.ccl +++ b/TestNorms/interface.ccl @@ -1,6 +1,6 @@ # Interface definition for thorn TestNorms implements: TestNorms -inherits: CarpetX +inherits: Driver, CarpetXRegrid uses include header: loop.hxx diff --git a/TestNorms/schedule.ccl b/TestNorms/schedule.ccl index a570af2ed..95f895383 100644 --- a/TestNorms/schedule.ccl +++ b/TestNorms/schedule.ccl @@ -12,7 +12,7 @@ STORAGE: gf111 SCHEDULE TestNorms_SetError AT postinitial { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Set up test grid" SCHEDULE TestNorms_Set AT initial diff --git a/TestNorms/test/norms.par b/TestNorms/test/norms.par index be6a3cb59..d8c35823c 100644 --- a/TestNorms/test/norms.par +++ b/TestNorms/test/norms.par @@ -37,7 +37,7 @@ CarpetX::blocking_factor_z = $blocking_factor CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestNorms/test/norms/norms/carpetx-regrid_error.tsv b/TestNorms/test/norms/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestNorms/test/norms/norms/carpetx-regrid_error.tsv rename to TestNorms/test/norms/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-constant.par b/TestODESolvers/test/test-constant.par index 5907663bf..cc2d47833 100644 --- a/TestODESolvers/test/test-constant.par +++ b/TestODESolvers/test/test-constant.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-constant/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-constant/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-constant/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-constant/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-dp87.par b/TestODESolvers/test/test-dp87.par index 56d3a9f7f..16873d493 100644 --- a/TestODESolvers/test/test-dp87.par +++ b/TestODESolvers/test/test-dp87.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.03 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-dp87/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-dp87/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-dp87/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-dp87/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-euler.par b/TestODESolvers/test/test-euler.par index b27bac15a..a7844524f 100644 --- a/TestODESolvers/test/test-euler.par +++ b/TestODESolvers/test/test-euler.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-euler/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-euler/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-euler/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-euler/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-rk2.par b/TestODESolvers/test/test-rk2.par index c9c765cf4..8fd062b2c 100644 --- a/TestODESolvers/test/test-rk2.par +++ b/TestODESolvers/test/test-rk2.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-rk2/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-rk2/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-rk2/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-rk2/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-rk3.par b/TestODESolvers/test/test-rk3.par index 917514ee3..4169e6b8a 100644 --- a/TestODESolvers/test/test-rk3.par +++ b/TestODESolvers/test/test-rk3.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-rk3/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-rk3/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-rk3/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-rk3/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-rk4.par b/TestODESolvers/test/test-rk4.par index 9eb8cd0ce..b4dc50c77 100644 --- a/TestODESolvers/test/test-rk4.par +++ b/TestODESolvers/test/test-rk4.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-rk4/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-rk4/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-rk4/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-rk4/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-rkf78.par b/TestODESolvers/test/test-rkf78.par index 70a64672e..55211a171 100644 --- a/TestODESolvers/test/test-rkf78.par +++ b/TestODESolvers/test/test-rkf78.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.01 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-rkf78/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-rkf78/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-rkf78/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-rkf78/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers/test/test-ssprk3.par b/TestODESolvers/test/test-ssprk3.par index cc06470ce..13c0952be 100644 --- a/TestODESolvers/test/test-ssprk3.par +++ b/TestODESolvers/test/test-ssprk3.par @@ -17,9 +17,10 @@ CarpetX::blocking_factor_z = 1 CarpetX::ghost_size = 0 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::dtfac = 0.001 Cactus::cctk_itlast = 10 @@ -40,7 +41,7 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes # TestODESolvers::corder requires larger tolerances (~1e-5) CarpetX::out_norm_vars = " - CarpetX::regrid_error + CarpetXRegrid::regrid_error # TestODESolvers::corder TestODESolvers::error TestODESolvers::error2 diff --git a/TestODESolvers/test/test-ssprk3/norms/carpetx-regrid_error.tsv b/TestODESolvers/test/test-ssprk3/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from TestODESolvers/test/test-ssprk3/norms/carpetx-regrid_error.tsv rename to TestODESolvers/test/test-ssprk3/norms/carpetxregrid-regrid_error.tsv diff --git a/TestODESolvers2/test/test-constant.par b/TestODESolvers2/test/test-constant.par index 4b2f2bead..ba4bcae3e 100644 --- a/TestODESolvers2/test/test-constant.par +++ b/TestODESolvers2/test/test-constant.par @@ -39,9 +39,11 @@ ODESolvers::method = "constant" TestODESolvers2::porder = 0 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-dp87.par b/TestODESolvers2/test/test-dp87.par index 2eec0a1cd..1f520224d 100644 --- a/TestODESolvers2/test/test-dp87.par +++ b/TestODESolvers2/test/test-dp87.par @@ -39,9 +39,11 @@ ODESolvers::method = "DP87" TestODESolvers2::porder = 8 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-euler.par b/TestODESolvers2/test/test-euler.par index 123b1e984..dfe330434 100644 --- a/TestODESolvers2/test/test-euler.par +++ b/TestODESolvers2/test/test-euler.par @@ -39,9 +39,11 @@ ODESolvers::method = "Euler" TestODESolvers2::porder = 1 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-rk2.par b/TestODESolvers2/test/test-rk2.par index bc7cdbbc4..7a38345cc 100644 --- a/TestODESolvers2/test/test-rk2.par +++ b/TestODESolvers2/test/test-rk2.par @@ -39,9 +39,11 @@ ODESolvers::method = "RK2" TestODESolvers2::porder = 2 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-rk3.par b/TestODESolvers2/test/test-rk3.par index 6ad46a0bb..0b110fa97 100644 --- a/TestODESolvers2/test/test-rk3.par +++ b/TestODESolvers2/test/test-rk3.par @@ -39,9 +39,11 @@ ODESolvers::method = "RK3" TestODESolvers2::porder = 3 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-rk4.par b/TestODESolvers2/test/test-rk4.par index 4ada66742..747320539 100644 --- a/TestODESolvers2/test/test-rk4.par +++ b/TestODESolvers2/test/test-rk4.par @@ -39,9 +39,11 @@ ODESolvers::method = "RK4" TestODESolvers2::porder = 4 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-rkf78.par b/TestODESolvers2/test/test-rkf78.par index 1de07472b..17aeec830 100644 --- a/TestODESolvers2/test/test-rkf78.par +++ b/TestODESolvers2/test/test-rkf78.par @@ -39,9 +39,11 @@ ODESolvers::method = "RKF78" TestODESolvers2::porder = 7 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestODESolvers2/test/test-ssprk3.par b/TestODESolvers2/test/test-ssprk3.par index 620bc7f4c..24860f9ca 100644 --- a/TestODESolvers2/test/test-ssprk3.par +++ b/TestODESolvers2/test/test-ssprk3.par @@ -39,9 +39,11 @@ ODESolvers::method = "SSPRK3" TestODESolvers2::porder = 3 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no +CarpetX::out_metadata = no CarpetX::out_norm_vars = "" CarpetX::out_tsv_vars = " diff --git a/TestOutput/test/checkpoint-openpmd.par b/TestOutput/test/checkpoint-openpmd.par index 13299182f..272292953 100644 --- a/TestOutput/test/checkpoint-openpmd.par +++ b/TestOutput/test/checkpoint-openpmd.par @@ -26,8 +26,9 @@ CarpetX::boundary_upper_y = "linear extrapolation" CarpetX::boundary_upper_z = "linear extrapolation" IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestOutput/test/output-arrays.par b/TestOutput/test/output-arrays.par index 774e4dd61..111cddebc 100644 --- a/TestOutput/test/output-arrays.par +++ b/TestOutput/test/output-arrays.par @@ -26,8 +26,9 @@ CarpetX::boundary_upper_y = "linear extrapolation" CarpetX::boundary_upper_z = "linear extrapolation" IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestOutput/test/output-every0.par b/TestOutput/test/output-every0.par index fd550de0a..57780a433 100644 --- a/TestOutput/test/output-every0.par +++ b/TestOutput/test/output-every0.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 0 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/output-every1.par b/TestOutput/test/output-every1.par index c8aad7f56..337bcd775 100644 --- a/TestOutput/test/output-every1.par +++ b/TestOutput/test/output-every1.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/output-every3.par b/TestOutput/test/output-every3.par index 1233c8162..f46785f15 100644 --- a/TestOutput/test/output-every3.par +++ b/TestOutput/test/output-every3.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 3 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/output-openpmd.par b/TestOutput/test/output-openpmd.par index bbcd56bbe..bfba1cfab 100644 --- a/TestOutput/test/output-openpmd.par +++ b/TestOutput/test/output-openpmd.par @@ -26,8 +26,9 @@ CarpetX::boundary_upper_y = "linear extrapolation" CarpetX::boundary_upper_z = "linear extrapolation" IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestOutput/test/output-tsv-every0.par b/TestOutput/test/output-tsv-every0.par index bed1d05ed..31a66d45b 100644 --- a/TestOutput/test/output-tsv-every0.par +++ b/TestOutput/test/output-tsv-every0.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" CarpetX::out_tsv_every = 0 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/output-tsv-every1.par b/TestOutput/test/output-tsv-every1.par index 623916a87..d4d8b8b9d 100644 --- a/TestOutput/test/output-tsv-every1.par +++ b/TestOutput/test/output-tsv-every1.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" CarpetX::out_tsv_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/output-tsv-every3.par b/TestOutput/test/output-tsv-every3.par index 330317b6a..d81c0ae31 100644 --- a/TestOutput/test/output-tsv-every3.par +++ b/TestOutput/test/output-tsv-every3.par @@ -12,8 +12,9 @@ CarpetX::ncells_y = 32 CarpetX::ncells_z = 32 IO::out_dir = $parfile -IO::parfile_write = "no" CarpetX::out_tsv_every = 3 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no CarpetX::out_tsv_vars = "CoordinatesX::cell_volume" diff --git a/TestOutput/test/recover-openpmd.par b/TestOutput/test/recover-openpmd.par index 017ecc7b4..64bdb3613 100644 --- a/TestOutput/test/recover-openpmd.par +++ b/TestOutput/test/recover-openpmd.par @@ -28,8 +28,9 @@ CarpetX::boundary_upper_y = "linear extrapolation" CarpetX::boundary_upper_z = "linear extrapolation" IO::out_dir = $parfile -IO::parfile_write = "no" IO::out_every = 1 +IO::out_fileinfo = "axis labels" +IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/interface.ccl b/TestProlongate/interface.ccl index d68ba3ed8..65917e470 100644 --- a/TestProlongate/interface.ccl +++ b/TestProlongate/interface.ccl @@ -2,7 +2,7 @@ IMPLEMENTS: TestProlongate -INHERITS: CarpetX +INHERITS: CarpetXRegrid USES INCLUDE HEADER: loop.hxx diff --git a/TestProlongate/schedule.ccl b/TestProlongate/schedule.ccl index fd796129e..f122993da 100644 --- a/TestProlongate/schedule.ccl +++ b/TestProlongate/schedule.ccl @@ -50,13 +50,13 @@ STORAGE: gf111_sum_count SCHEDULE TestProlongate_Regrid AT postinitial { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Set up test grid" SCHEDULE TestProlongate_Regrid AT poststep { LANG: C - WRITES: CarpetX::regrid_error(interior) + WRITES: CarpetXRegrid::regrid_error(interior) } "Set up test grid" diff --git a/TestProlongate/test/test_cc_co_o1.par b/TestProlongate/test/test_cc_co_o1.par index e8a4b932b..06eec6550 100644 --- a/TestProlongate/test/test_cc_co_o1.par +++ b/TestProlongate/test/test_cc_co_o1.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_cc_nc_o1.par b/TestProlongate/test/test_cc_nc_o1.par index edcf87344..e20fb2374 100644 --- a/TestProlongate/test/test_cc_nc_o1.par +++ b/TestProlongate/test/test_cc_nc_o1.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_cc_nc_o3.par b/TestProlongate/test/test_cc_nc_o3.par index f920b1b80..54e4d0b71 100644 --- a/TestProlongate/test/test_cc_nc_o3.par +++ b/TestProlongate/test/test_cc_nc_o3.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_ddf_o1.par b/TestProlongate/test/test_ddf_o1.par index 71aaf5253..faaad2b0c 100644 --- a/TestProlongate/test/test_ddf_o1.par +++ b/TestProlongate/test/test_ddf_o1.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_ddf_o3.par b/TestProlongate/test/test_ddf_o3.par index 6b43b15c9..4f7714062 100644 --- a/TestProlongate/test/test_ddf_o3.par +++ b/TestProlongate/test/test_ddf_o3.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_ddf_o5.par b/TestProlongate/test/test_ddf_o5.par index 9c692e127..0ea45b98f 100644 --- a/TestProlongate/test/test_ddf_o5.par +++ b/TestProlongate/test/test_ddf_o5.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_ddf_o7.par b/TestProlongate/test/test_ddf_o7.par index aefb3701e..7de28d33e 100644 --- a/TestProlongate/test/test_ddf_o7.par +++ b/TestProlongate/test/test_ddf_o7.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_eno_o1.par b/TestProlongate/test/test_eno_o1.par index 09e7edece..1ca1d59eb 100644 --- a/TestProlongate/test/test_eno_o1.par +++ b/TestProlongate/test/test_eno_o1.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_eno_o3.par b/TestProlongate/test/test_eno_o3.par index f61254f26..fed5d4b67 100644 --- a/TestProlongate/test/test_eno_o3.par +++ b/TestProlongate/test/test_eno_o3.par @@ -44,12 +44,13 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_eno_per_group_o1.par b/TestProlongate/test/test_eno_per_group_o1.par index 377636a18..2e9f85096 100644 --- a/TestProlongate/test/test_eno_per_group_o1.par +++ b/TestProlongate/test/test_eno_per_group_o1.par @@ -51,6 +51,7 @@ CarpetX::dtfac = 0.5 IO::out_dir = $parfile IO::out_every = 1 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no diff --git a/TestProlongate/test/test_hermite_o1.par b/TestProlongate/test/test_hermite_o1.par index 6bf46211a..fc9edcd06 100644 --- a/TestProlongate/test/test_hermite_o1.par +++ b/TestProlongate/test/test_hermite_o1.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_hermite_o3.par b/TestProlongate/test/test_hermite_o3.par index 96a798b8e..db7fd8192 100644 --- a/TestProlongate/test/test_hermite_o3.par +++ b/TestProlongate/test/test_hermite_o3.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_hermite_o5.par b/TestProlongate/test/test_hermite_o5.par index 5d6c5345d..6073ab0a5 100644 --- a/TestProlongate/test/test_hermite_o5.par +++ b/TestProlongate/test/test_hermite_o5.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_natural_o1.par b/TestProlongate/test/test_natural_o1.par index da484e1b3..f74b3e4bf 100644 --- a/TestProlongate/test/test_natural_o1.par +++ b/TestProlongate/test/test_natural_o1.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_natural_o3.par b/TestProlongate/test/test_natural_o3.par index 2f924de16..946a7ead1 100644 --- a/TestProlongate/test/test_natural_o3.par +++ b/TestProlongate/test/test_natural_o3.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_natural_o5.par b/TestProlongate/test/test_natural_o5.par index a15814b7d..2d99fd3c0 100644 --- a/TestProlongate/test/test_natural_o5.par +++ b/TestProlongate/test/test_natural_o5.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_natural_o7.par b/TestProlongate/test/test_natural_o7.par index 3064d750b..d71be4b31 100644 --- a/TestProlongate/test/test_natural_o7.par +++ b/TestProlongate/test/test_natural_o7.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_poly_cons3lfb_o1.par b/TestProlongate/test/test_poly_cons3lfb_o1.par index 878a1ca6b..9caa4e5bb 100644 --- a/TestProlongate/test/test_poly_cons3lfb_o1.par +++ b/TestProlongate/test/test_poly_cons3lfb_o1.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_poly_cons3lfb_o3.par b/TestProlongate/test/test_poly_cons3lfb_o3.par index ca93e5c24..d3293b058 100644 --- a/TestProlongate/test/test_poly_cons3lfb_o3.par +++ b/TestProlongate/test/test_poly_cons3lfb_o3.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestProlongate/test/test_poly_cons3lfb_o5.par b/TestProlongate/test/test_poly_cons3lfb_o5.par index 6f7b465b7..a4540f577 100644 --- a/TestProlongate/test/test_poly_cons3lfb_o5.par +++ b/TestProlongate/test/test_poly_cons3lfb_o5.par @@ -44,7 +44,7 @@ CarpetX::boundary_upper_z = "dirichlet" CarpetX::max_num_levels = $nlevels CarpetX::regrid_every = 1 -CarpetX::regrid_error_threshold = 0.01 +Driver::regrid_error_threshold = 0.01 CarpetX::dtfac = 0.5 diff --git a/TestSymmetries/par/test_symmetry_xnone_ynone_znone.par b/TestSymmetries/par/test_symmetry_xnone_ynone_znone.par index 3a3063ccd..16842dd75 100644 --- a/TestSymmetries/par/test_symmetry_xnone_ynone_znone.par +++ b/TestSymmetries/par/test_symmetry_xnone_ynone_znone.par @@ -19,9 +19,9 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::reflection_x = no CarpetX::reflection_y = no diff --git a/TestSymmetries/par/test_symmetry_xperiodic_yperiodic_zperiodic.par b/TestSymmetries/par/test_symmetry_xperiodic_yperiodic_zperiodic.par index a7488aafe..8c8722574 100644 --- a/TestSymmetries/par/test_symmetry_xperiodic_yperiodic_zperiodic.par +++ b/TestSymmetries/par/test_symmetry_xperiodic_yperiodic_zperiodic.par @@ -19,9 +19,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes CarpetX::reflection_x = no CarpetX::reflection_y = no diff --git a/TestSymmetries/par/test_symmetry_xreflohi_yreflohi_zreflohi.par b/TestSymmetries/par/test_symmetry_xreflohi_yreflohi_zreflohi.par index 5399f5a2f..3acedfa42 100644 --- a/TestSymmetries/par/test_symmetry_xreflohi_yreflohi_zreflohi.par +++ b/TestSymmetries/par/test_symmetry_xreflohi_yreflohi_zreflohi.par @@ -19,9 +19,9 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = no -CarpetX::periodic_y = no -CarpetX::periodic_z = no +Driver::periodic_x = no +Driver::periodic_y = no +Driver::periodic_z = no CarpetX::reflection_x = yes CarpetX::reflection_y = yes diff --git a/WaveToyX/interface.ccl b/WaveToyX/interface.ccl index ddfbbdb47..fd399a45c 100644 --- a/WaveToyX/interface.ccl +++ b/WaveToyX/interface.ccl @@ -2,8 +2,6 @@ IMPLEMENTS: WaveToyX -INHERITS: CarpetX - USES INCLUDE HEADER: loop_device.hxx USES INCLUDE HEADER: vect.hxx diff --git a/WaveToyX/par/standing.par b/WaveToyX/par/standing.par index 74b9c31d6..3a3b5dc7d 100644 --- a/WaveToyX/par/standing.par +++ b/WaveToyX/par/standing.par @@ -13,9 +13,10 @@ Cactus::presync_mode = "mixed-error" CarpetX::poison_undefined_values = no -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::terminate = "time" Cactus::cctk_final_time = 1.0 diff --git a/WaveToyX/schedule.ccl b/WaveToyX/schedule.ccl index d91981e83..ff0123c46 100644 --- a/WaveToyX/schedule.ccl +++ b/WaveToyX/schedule.ccl @@ -12,14 +12,14 @@ SCHEDULE WaveToyX_Initial AT initial # { # LANG: C # READS: state(everywhere) -# WRITES: CarpetX::regrid_error(interior) +# WRITES: CarpetXRegrid::regrid_error(interior) # } "Estimate error for regridding" # # SCHEDULE WaveToyX_EstimateError AT poststep # { # LANG: C # READS: state(everywhere) -# WRITES: CarpetX::regrid_error(interior) +# WRITES: CarpetXRegrid::regrid_error(interior) # } "Estimate error for regridding" SCHEDULE WaveToyX_RHS IN ODESolvers_RHS diff --git a/WaveToyX/test/presync.par b/WaveToyX/test/presync.par index 49d9acb59..ec5172d9a 100644 --- a/WaveToyX/test/presync.par +++ b/WaveToyX/test/presync.par @@ -14,9 +14,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::cctk_itlast = 10 @@ -26,6 +27,7 @@ ODESolvers::method = "RK3" IO::out_dir = $parfile IO::out_every = 10 +IO::out_fileinfo = "axis labels" IO::parfile_write = no CarpetX::out_metadata = no @@ -35,7 +37,6 @@ CarpetX::out_norm_omit_sumloc_for_backward_compatibility = yes CarpetX::out_tsv_vars = " WaveToyX::state - WaveToyX::rhs WaveToyX::energy WaveToyX::error " diff --git a/WaveToyX/test/presync/norms/carpetx-regrid_error.tsv b/WaveToyX/test/presync/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from WaveToyX/test/presync/norms/carpetx-regrid_error.tsv rename to WaveToyX/test/presync/norms/carpetxregrid-regrid_error.tsv diff --git a/WaveToyX/test/radiative/norms/carpetx-regrid_error.tsv b/WaveToyX/test/radiative/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from WaveToyX/test/radiative/norms/carpetx-regrid_error.tsv rename to WaveToyX/test/radiative/norms/carpetxregrid-regrid_error.tsv diff --git a/WaveToyX/test/reflecting/norms/carpetx-regrid_error.tsv b/WaveToyX/test/reflecting/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from WaveToyX/test/reflecting/norms/carpetx-regrid_error.tsv rename to WaveToyX/test/reflecting/norms/carpetxregrid-regrid_error.tsv diff --git a/WaveToyX/test/standing.par b/WaveToyX/test/standing.par index 2193a1bc1..631510c0e 100644 --- a/WaveToyX/test/standing.par +++ b/WaveToyX/test/standing.par @@ -14,9 +14,10 @@ CarpetX::ncells_x = 8 CarpetX::ncells_y = 8 CarpetX::ncells_z = 8 -CarpetX::periodic_x = yes -CarpetX::periodic_y = yes -CarpetX::periodic_z = yes +Driver::periodic = "yes" +Driver::periodic_x = yes +Driver::periodic_y = yes +Driver::periodic_z = yes Cactus::cctk_itlast = 10 diff --git a/WaveToyX/test/standing/norms/carpetx-regrid_error.tsv b/WaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv similarity index 100% rename from WaveToyX/test/standing/norms/carpetx-regrid_error.tsv rename to WaveToyX/test/standing/norms/carpetxregrid-regrid_error.tsv diff --git a/docker/carpetx-arm64v8-cpu.dockerfile b/docker/carpetx-arm64v8-cpu.dockerfile index 49a507eac..c7912bcd6 100644 --- a/docker/carpetx-arm64v8-cpu.dockerfile +++ b/docker/carpetx-arm64v8-cpu.dockerfile @@ -7,8 +7,8 @@ # docker push einsteintoolkit/carpetx:arm64v8-cpu-real32 # noble is ubuntu:24.04 -# FROM arm64v8/ubuntu:noble-20240605 -FROM arm64v8/ubuntu:noble-20240801 +# FROM arm64v8/ubuntu:noble-20240801 +FROM arm64v8/ubuntu:noble-20240904.1 ENV DEBIAN_FRONTEND=noninteractive \ LANGUAGE=en_US.en \ @@ -24,11 +24,13 @@ WORKDIR /cactus # python2 RUN apt-get update && \ apt-get --yes --no-install-recommends install \ + bzip2 \ ca-certificates \ clang-format \ cmake \ cvs \ diffutils \ + elfutils \ g++ \ gcc \ gdb \ @@ -46,8 +48,11 @@ RUN apt-get update && \ libgsl-dev \ libhdf5-dev \ libhwloc-dev \ + libiberty-dev \ + liblzma-dev \ libopenblas-dev \ libopenmpi-dev \ + libpapi-dev \ libpetsc-real-dev \ libtool \ libudev-dev \ @@ -59,6 +64,8 @@ RUN apt-get update && \ meson \ ninja-build \ numactl \ + papi-tools \ + patch \ perl \ pkgconf \ python3 \ @@ -66,43 +73,46 @@ RUN apt-get update && \ python3-requests \ rsync \ subversion \ + tar \ vim \ wget \ xz-utils \ zlib1g-dev \ + zstd \ && \ rm -rf /var/lib/apt/lists/* -# # Install HPCToolkit -# # Install this first because it is expensive to build -# RUN mkdir src && \ -# (cd src && \ -# wget https://github.com/spack/spack/archive/refs/tags/v0.21.0.tar.gz && \ -# tar xzf v0.21.0.tar.gz && \ -# export SPACK_ROOT="$(pwd)/spack-0.21.0" && \ -# mkdir -p "${HOME}/.spack" && \ -# echo 'config: {install_tree: {root: /spack}}' >"${HOME}/.spack/config.yaml" && \ -# . ${SPACK_ROOT}/share/spack/setup-env.sh && \ -# spack external find \ -# autoconf \ -# automake \ -# cmake \ -# diffutils \ -# elfutils \ -# gmake \ -# libtool \ -# m4 \ -# meson \ -# ninja \ -# numactl \ -# perl \ -# pkgconf \ -# python \ -# && \ -# spack install --fail-fast hpctoolkit ~viewer && \ -# spack view --dependencies no hardlink /hpctoolkit hpctoolkit && \ -# true) && \ -# rm -rf src "${HOME}/.spack" +# Install HPCToolkit +# Install this first because it is expensive to build +# Try to reuse build tools from Ubuntu, but do not use any libraries because HPC Toolkit is a bit iffy to install. +RUN mkdir src && \ + (cd src && \ + wget https://github.com/spack/spack/archive/refs/tags/v0.22.2.tar.gz && \ + tar xzf v0.22.2.tar.gz && \ + export SPACK_ROOT="$(pwd)/spack-0.22.2" && \ + mkdir -p "${HOME}/.spack" && \ + echo 'config: {install_tree: {root: /spack}}' >"${HOME}/.spack/config.yaml" && \ + . ${SPACK_ROOT}/share/spack/setup-env.sh && \ + spack external find \ + autoconf \ + automake \ + cmake \ + diffutils \ + elfutils \ + gmake \ + libtool \ + m4 \ + meson \ + ninja \ + numactl \ + perl \ + pkgconf \ + python \ + && \ + spack install --fail-fast hpctoolkit ~viewer && \ + spack view --dependencies no hardlink /hpctoolkit hpctoolkit && \ + true) && \ + rm -rf src "${HOME}/.spack" # Install blosc2 # blosc2 is a compression library, comparable to zlib @@ -286,9 +296,9 @@ ARG real_precision=real64 # Should we keep the AMReX source tree around for debugging? RUN mkdir src && \ (cd src && \ - wget https://github.com/AMReX-Codes/amrex/archive/24.09.tar.gz && \ - tar xzf 24.09.tar.gz && \ - cd amrex-24.09 && \ + wget https://github.com/AMReX-Codes/amrex/archive/24.10.tar.gz && \ + tar xzf 24.10.tar.gz && \ + cd amrex-24.10 && \ case $real_precision in \ real32) precision=SINGLE;; \ real64) precision=DOUBLE;; \ diff --git a/docker/carpetx-cpu.dockerfile b/docker/carpetx-cpu.dockerfile index 9ea26d129..57d2223de 100644 --- a/docker/carpetx-cpu.dockerfile +++ b/docker/carpetx-cpu.dockerfile @@ -7,8 +7,8 @@ # docker push einsteintoolkit/carpetx:cpu-real32 # noble is ubuntu:24.04 -# FROM ubuntu:noble-20240605 -FROM ubuntu:noble-20240801 +# FROM amd64/ubuntu:noble-20240801 +FROM amd64/ubuntu:noble-20240904.1 ENV DEBIAN_FRONTEND=noninteractive \ LANGUAGE=en_US.en \ @@ -87,9 +87,9 @@ RUN apt-get update && \ # Try to reuse build tools from Ubuntu, but do not use any libraries because HPC Toolkit is a bit iffy to install. RUN mkdir src && \ (cd src && \ - wget https://github.com/spack/spack/archive/refs/tags/v0.22.1.tar.gz && \ - tar xzf v0.22.1.tar.gz && \ - export SPACK_ROOT="$(pwd)/spack-0.22.1" && \ + wget https://github.com/spack/spack/archive/refs/tags/v0.22.2.tar.gz && \ + tar xzf v0.22.2.tar.gz && \ + export SPACK_ROOT="$(pwd)/spack-0.22.2" && \ mkdir -p "${HOME}/.spack" && \ echo 'config: {install_tree: {root: /spack}}' >"${HOME}/.spack/config.yaml" && \ . ${SPACK_ROOT}/share/spack/setup-env.sh && \ @@ -296,9 +296,9 @@ ARG real_precision=real64 # Should we keep the AMReX source tree around for debugging? RUN mkdir src && \ (cd src && \ - wget https://github.com/AMReX-Codes/amrex/archive/24.09.tar.gz && \ - tar xzf 24.09.tar.gz && \ - cd amrex-24.09 && \ + wget https://github.com/AMReX-Codes/amrex/archive/24.10.tar.gz && \ + tar xzf 24.10.tar.gz && \ + cd amrex-24.10 && \ case $real_precision in \ real32) precision=SINGLE;; \ real64) precision=DOUBLE;; \ diff --git a/docker/carpetx-cuda.dockerfile b/docker/carpetx-cuda.dockerfile index bafa1f348..4b7fe33e8 100644 --- a/docker/carpetx-cuda.dockerfile +++ b/docker/carpetx-cuda.dockerfile @@ -6,8 +6,8 @@ # docker build --build-arg real_precision=real32 --file carpetx-cuda.dockerfile --tag einsteintoolkit/carpetx:cuda-real32 . # docker push einsteintoolkit/carpetx:cuda-real32 -FROM nvidia/cuda:12.5.1-devel-ubuntu24.04 -#TODO FROM nvidia/cuda:12.6.0-devel-ubuntu24.04 +# FROM amd64/nvidia/cuda:12.5.1-devel-ubuntu24.04 +FROM amd64/nvidia/cuda:12.6.1-devel-ubuntu24.04 ENV DEBIAN_FRONTEND=noninteractive \ LANGUAGE=en_US.en \ @@ -284,9 +284,9 @@ ARG real_precision=real64 # Should we keep the AMReX source tree around for debugging? RUN mkdir src && \ (cd src && \ - wget https://github.com/AMReX-Codes/amrex/archive/24.09.tar.gz && \ - tar xzf 24.09.tar.gz && \ - cd amrex-24.09 && \ + wget https://github.com/AMReX-Codes/amrex/archive/24.10.tar.gz && \ + tar xzf 24.10.tar.gz && \ + cd amrex-24.10 && \ case $real_precision in \ real32) precision=SINGLE;; \ real64) precision=DOUBLE;; \ diff --git a/docker/carpetx-oneapi.dockerfile b/docker/carpetx-oneapi.dockerfile index 3e49a7f28..4a73d8e2d 100644 --- a/docker/carpetx-oneapi.dockerfile +++ b/docker/carpetx-oneapi.dockerfile @@ -6,8 +6,8 @@ # docker build --build-arg real_precision=real32 --file carpetx-oneapi.dockerfile --tag einsteintoolkit/carpetx:oneapi-real32 . # docker push einsteintoolkit/carpetx:oneapi-real32 -# FROM intel/oneapi-basekit:2024.2.0-1-devel-ubuntu22.04 -FROM intel/oneapi-basekit:2024.2.1-0-devel-ubuntu22.04 +# FROM amd64/intel/oneapi-basekit:2024.2.0-1-devel-ubuntu22.04 +FROM amd64/intel/oneapi-basekit:2024.2.1-0-devel-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive \ LANGUAGE=en_US.en \ @@ -262,10 +262,10 @@ ARG real_precision=real64 # Should we keep the AMReX source tree around for debugging? RUN mkdir src && \ (cd src && \ - wget https://github.com/AMReX-Codes/amrex/archive/24.09.tar.gz && \ - tar xzf 24.09.tar.gz && \ + wget https://github.com/AMReX-Codes/amrex/archive/24.10.tar.gz && \ + tar xzf 24.10.tar.gz && \ rm -rf /opt/intel/oneapi/mpi && \ - cd amrex-24.09 && \ + cd amrex-24.10 && \ case $real_precision in \ real32) precision=SINGLE;; \ real64) precision=DOUBLE;; \ diff --git a/docker/carpetx-rocm.dockerfile b/docker/carpetx-rocm.dockerfile index e069230a8..d1e64b6db 100644 --- a/docker/carpetx-rocm.dockerfile +++ b/docker/carpetx-rocm.dockerfile @@ -6,8 +6,8 @@ # docker build --build-arg real_precision=real32 --file carpetx-rocm.dockerfile --tag einsteintoolkit/carpetx:rocm-real32 . # docker push einsteintoolkit/carpetx:rocm-real32 -# FROM rocm/dev-ubuntu-22.04:6.1.2 -FROM rocm/dev-ubuntu-24.04:6.2 +# FROM amd64/rocm/dev-ubuntu-22.04:6.1.2 +FROM amd64/rocm/dev-ubuntu-24.04:6.2 ENV DEBIAN_FRONTEND=noninteractive \ LANGUAGE=en_US.en \ @@ -286,9 +286,9 @@ ARG real_precision=real64 # Should we keep the AMReX source tree around for debugging? RUN mkdir src && \ (cd src && \ - wget https://github.com/AMReX-Codes/amrex/archive/24.09.tar.gz && \ - tar xzf 24.09.tar.gz && \ - cd amrex-24.09 && \ + wget https://github.com/AMReX-Codes/amrex/archive/24.10.tar.gz && \ + tar xzf 24.10.tar.gz && \ + cd amrex-24.10 && \ case $real_precision in \ real32) precision=SINGLE;; \ real64) precision=DOUBLE;; \ diff --git a/scripts/actions-cuda-real32.cfg b/scripts/actions-cuda-real32.cfg index 46b94a970..f0c895eae 100644 --- a/scripts/actions-cuda-real32.cfg +++ b/scripts/actions-cuda-real32.cfg @@ -15,7 +15,7 @@ FC = gfortran F90 = gfortran LD = nvcc -CPPFLAGS = -DSIMD_CPU +CPPFLAGS = -DSIMD_DISABLE CFLAGS = -pipe -g -std=gnu11 # - We use "--relocatable-device-code=true" to allow building with # debug versions of AMReX diff --git a/scripts/actions-cuda-real64.cfg b/scripts/actions-cuda-real64.cfg index f81beb5dd..8f9f1bba6 100644 --- a/scripts/actions-cuda-real64.cfg +++ b/scripts/actions-cuda-real64.cfg @@ -15,7 +15,7 @@ FC = gfortran F90 = gfortran LD = nvcc -CPPFLAGS = -DSIMD_CPU +CPPFLAGS = -DSIMD_DISABLE CFLAGS = -pipe -g -std=gnu11 # - We use "--relocatable-device-code=true" to allow building with # debug versions of AMReX diff --git a/scripts/actions-oneapi-real64.cfg b/scripts/actions-oneapi-real64.cfg index 972d35a73..01fbebb07 100644 --- a/scripts/actions-oneapi-real64.cfg +++ b/scripts/actions-oneapi-real64.cfg @@ -16,7 +16,7 @@ F90 = gfortran LD = /opt/intel/oneapi/compiler/2024.2/bin/icpx # -g # Debug information uses too much disk space on CI -CPPFLAGS = -DSIMD_DISABLE -DSIMD_CPU +CPPFLAGS = -DSIMD_DISABLE CFLAGS = -fp-model=precise -march=x86-64-v3 -pipe -std=gnu11 CXXFLAGS = -fp-model=precise -fsycl -march=x86-64-v3 -pipe -std=c++17 FPPFLAGS = -traditional @@ -45,8 +45,9 @@ FPP_DEBUG_FLAGS = -DCARPET_DEBUG F90_DEBUG_FLAGS = -fcheck=bounds,do,mem,pointer,recursion -finit-character=65 -finit-integer=42424242 -finit-real=nan OPTIMISE = yes +# -O3 for SYCL leads to a segfault C_OPTIMISE_FLAGS = -O3 -fexcess-precision=fast -ffp-contract=fast -fno-math-errno -fno-rounding-math -CXX_OPTIMISE_FLAGS = -O3 -fexcess-precision=fast -ffp-contract=fast -fno-math-errno -fno-rounding-math +CXX_OPTIMISE_FLAGS = -O2 -fexcess-precision=fast -ffp-contract=fast -fno-math-errno -fno-rounding-math F90_OPTIMISE_FLAGS = -O3 -fcx-limited-range -fexcess-precision=fast -ffp-contract=fast -fno-math-errno -fno-rounding-math -fno-signaling-nans # Clang segfaults with OpenMP enabled diff --git a/scripts/actions-rocm-real64.cfg b/scripts/actions-rocm-real64.cfg index 1fe8a0ecf..f067f13ba 100644 --- a/scripts/actions-rocm-real64.cfg +++ b/scripts/actions-rocm-real64.cfg @@ -16,7 +16,7 @@ FC = gfortran F90 = gfortran LD = /opt/rocm/llvm/bin/clang++ -CPPFLAGS = -DSIMD_CPU +CPPFLAGS = -DSIMD_DISABLE CFLAGS = -pipe -g -std=gnu11 CXXFLAGS = -pipe -g -std=c++17 --offload-arch=gfx90a FPPFLAGS = -traditional diff --git a/scripts/carpetx.th b/scripts/carpetx.th index 723d6cbb0..7b36eb5f4 100644 --- a/scripts/carpetx.th +++ b/scripts/carpetx.th @@ -701,6 +701,7 @@ CarpetX/Algo CarpetX/Arith CarpetX/BoxInBox CarpetX/CarpetX +CarpetX/CarpetXRegrid CarpetX/CoordinatesX CarpetX/Derivs CarpetX/ErrorEstimator