From 14a5eebf32fe9b6678b7af0842a705f2d5a4f759 Mon Sep 17 00:00:00 2001 From: Jonah Miller Date: Thu, 18 Feb 2021 11:48:35 -0700 Subject: [PATCH] first ish commit --- .gitignore | 10 + .gitmodules | 4 + Catch2 | 1 + Makefile | 71 +++ Makefile.kokkos | 78 +++ README.md | 106 ++++ convergence.cpp | 115 ++++ databox.hpp | 912 ++++++++++++++++++++++++++++++ figs/convergence.pdf | Bin 0 -> 223303 bytes figs/convergence.png | Bin 0 -> 107524 bytes interpolation.hpp | 175 ++++++ plot_convergence.py | 48 ++ ports-of-call/portable_arrays.hpp | 2 +- sp5.hpp | 46 ++ spiner.py | 62 ++ spiner_types.hpp | 22 + test.cpp | 435 ++++++++++++++ 17 files changed, 2086 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 Catch2 create mode 100644 Makefile create mode 100644 Makefile.kokkos create mode 100644 README.md create mode 100644 convergence.cpp create mode 100644 databox.hpp create mode 100644 figs/convergence.pdf create mode 100644 figs/convergence.png create mode 100644 interpolation.hpp create mode 100755 plot_convergence.py create mode 100644 sp5.hpp create mode 100644 spiner.py create mode 100644 spiner_types.hpp create mode 100644 test.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c70fdda43 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +a.out +*.o +test.bin +convergence.bin +*.hpp.gch +convergence.dat +.markdown-preview.html +*.sp5 +*.lst +*.s diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..f4cabc62c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "Catch2"] + path = Catch2 + url = https://github.com/catchorg/Catch2.git + branch = v2.x diff --git a/Catch2 b/Catch2 new file mode 160000 index 000000000..68975e3ff --- /dev/null +++ b/Catch2 @@ -0,0 +1 @@ +Subproject commit 68975e3ff3a9d026965ad142b04f548e685b5095 diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..f1110d9dc --- /dev/null +++ b/Makefile @@ -0,0 +1,71 @@ +# © (or copyright) 2019-2021. Triad National Security, LLC. All rights +# reserved. This program was produced under U.S. Government contract +# 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +# operated by Triad National Security, LLC for the U.S. Department of +# Energy/National Nuclear Security Administration. All rights in the +# program are reserved by Triad National Security, LLC, and the +# U.S. Department of Energy/National Nuclear Security +# Administration. The Government is granted for itself and others acting +# on its behalf a nonexclusive, paid-up, irrevocable worldwide license +# in this material to reproduce, prepare derivative works, distribute +# copies to the public, perform publicly and display publicly, and to +# permit others to do so. + +USE_HDF5=no + +CC=g++ +INC= spiner_types.hpp \ + databox.hpp \ + interpolation.hpp +GCH=$(INC:.hpp=.hpp.gch) + +H5CC=h5c++ +H5_DIR=/usr/local/hdf5-parallel +H5_INCLUDE=-I${H5_DIR}/include +H5_LIB=-L${H5_DIR}/lib +H5_LINK=-lhdf5_hl -lhdf5 -Wl,-rpath=${H5_DIR}/lib/ + +CATCH_INCLUDE=-ICatch2/single_include/catch2 +PORTS_INCLUDE=-Iports-of-call +BASE_FLAGS=-std=c++14 -Wall -fdiagnostics-color=always -g + +ifeq ($(USE_HDF5),yes) + CC=${H5CC} + INCLUDE_FLAGS=${CATCH_INCLUDE} ${PORTS_INCLUDE} ${H5_INCLUDE} + LIB_FLAGS=${H5_LIB} + LINK_FLAGS=${H5_LINK} + CFLAGS=${BASE_FLAGS} ${INCLUDE_FLAGS} -DSPINER_USE_HDF +else + INCLUDE_FLAGS=${CATCH_INCLUDE} ${PORTS_INCLUDE} + LIB_FLAGS= + LINK_FLAGS= + CFLAGS=${BASE_FLAGS} ${INCLUDE_FLAGS} +endif + +LFLAGS=${LIB_FLAGS} ${LINK_FLAGS} + +default: test + +all: test convergence + +test: test.bin + ./test.bin + +convergence: convergence.bin + ./convergence.bin + python plot_convergence.py + +%.bin: %.o + $(CC) ${CFLAGS} ${LFLAGS} -g -o $@ $^ + +%.o: %.cpp ${INC} + $(CC) ${CFLAGS} -c -o $@ $< + +.PHONY: default all test convergence clean info + +clean: + $(RM) test.bin convergence.bin + $(RM) test.o convergence.o databox.o + $(RM) ${GCH} + $(RM) convergence.dat + $(RM) databox.sp5 diff --git a/Makefile.kokkos b/Makefile.kokkos new file mode 100644 index 000000000..5d41bca23 --- /dev/null +++ b/Makefile.kokkos @@ -0,0 +1,78 @@ +# © (or copyright) 2019-2021. Triad National Security, LLC. All rights +# reserved. This program was produced under U.S. Government contract +# 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +# operated by Triad National Security, LLC for the U.S. Department of +# Energy/National Nuclear Security Administration. All rights in the +# program are reserved by Triad National Security, LLC, and the +# U.S. Department of Energy/National Nuclear Security +# Administration. The Government is granted for itself and others acting +# on its behalf a nonexclusive, paid-up, irrevocable worldwide license +# in this material to reproduce, prepare derivative works, distribute +# copies to the public, perform publicly and display publicly, and to +# permit others to do so. + +KOKKOS_PATH = ${HOME}/kokkos +#SRC = test.cpp +SRC = convergence.cpp +vpath %.cpp $(sort $(dir $(SRC))) + +KOKKOS_CXX_STANDARD=c++14 + +default: build + echo "Start Build" + +#H5_DIR=/usr/local/hdf5-parallel +#H5_INCLUDE=-I${H5_DIR}/include +#H5_LIB=-L${H5_DIR}/lib +#H5_LINK=-lhdf5_hl -lhdf5 -Wl,-rpath=${H5_DIR}/lib/ + +ifneq (,$(findstring Cuda,$(KOKKOS_DEVICES))) +CXX = ${KOKKOS_PATH}/bin/nvcc_wrapper +CXXFLAGS = -O3 --expt-relaxed-constexpr +CXXFLAGS += -DPORTABILITY_STRATEGY_KOKKOS #-DSPINER_USE_HDF +LINK = ${CXX} +#LDFLAGS = +#EXE = simple_test_cuda +KOKKOS_DEVICES = "Cuda" +KOKKOS_ARCH = "Volta70" +KOKKOS_CUDA_OPTIONS += "enable_lambda;rdc" +#CXXFLAGS = -O3 --expt-relaxed-constexpr #-x cuda --cuda-gpu-arch=sm_37 --stdlib=libstdc++ -lineinfo +LINK = ${CXX} +LDFLAGS = +EXE = simple_test_cuda +else +CXX = g++ +CXXFLAGS = -O3 -g -DPORTABILITY_STRATEGY_KOKKOS #-DSPINER_USE_HDF +LINK = ${CXX} +LDFLAGS = #-lhdf5_hl -lhdf5 -Wl,-rpath=${H5_DIR}/lib/ +#EXE = simple_test +EXE = convergence_test +KOKKOS_DEVICES = "OpenMP" +KOKKOS_ARCH = "" +#KOKKOS_DEBUG=yes +endif + +EXTRA_INC += -ICatch2/single_include/catch2 -Iports-of-call +#EXTRA_INC += ${H5_INCLUDE} +DEPFLAGS = -M + +OBJ = $(notdir $(SRC:.cpp=.o)) +#LIB = -L${H5_DIR}/lib + +include $(KOKKOS_PATH)/Makefile.kokkos + +build: $(EXE) + +test: $(EXE) + ./$(EXE) + +$(EXE): $(OBJ) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ) $(KOKKOS_LIBS) $(LIB) -o $(EXE) + +clean: kokkos-clean + rm -f *.o *.cuda *.host *.rocm + +# Compilation rules + +%.o:%.cpp $(KOKKOS_CPP_DEPENDS) + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) $(EXTRA_INC) -c $< -o $(notdir $@) diff --git a/README.md b/README.md new file mode 100644 index 000000000..192b2c2d0 --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +Spiner +=== + +Performance portable utilities for representing and interpolating +tabulated data. Named for [Brent +Spiner](https://en.wikipedia.org/wiki/Brent_Spiner). + +## Installation + +`Spiner` is self-contained. Simply clone it as +```bash +git clone git@gitlab.lanl.gov:jonahm/spiner.git +``` +If you want to use unit tests, clone with submodules to include `Catch2`. +```bash +git clone --recurse-submodules git@gitlab.lanl.gov:jonahm/spiner.git +``` +To build the relevant object file, call +```bash +make databox +``` +To run unit tests, +```bash +make test +``` +and to do convergence testing, +```bash +make convergence +``` +At the moment, `Spiner` cannot be installed into a system directory. + +**Note that you may have to edit the `Makefile` to set paths to, e.g., `hdf5`.** + +## Dependencies + +`Spiner` has no dependencies for the `databox` tool. Simply include it in your project. It is header-only and requires only a few files: + +- `databox.hpp` +- `interpolation.hpp` +- `spiner_types.hpp` +- `sp5.hpp` + +The testing tooling requires a few different pieces: + +- Unit testing requires [Catch2](https://github.com/catchorg/Catch2), + which is header only. This is included via a git submodule. +- Convergence testing requires the scientific python stack, including: + - python3 + - numpy + - matplotlib + +## HDF5 + +`Spiner` supports reading and writing DataBox objects into a custom HDF5 format called `SP5`. +To enable this, compile with the appropriate `HDF5` linking and the flag `-DSPINER_USE_HDF5`. + +## Features + +- Spiner supports interpolation in arbitrary dimensions, and it's fast in 3d and fewer. +- Spiner supports interpolation onto "subtables" + +## Interpolation + +Interpolation is linear. Here's an example of interpolation in 3D (2D +slice shown). Convergence is second-order, as expected. + +![convergence plot](figs/convergence.png) + +## Copyright + +© (or copyright) 2019-2021. Triad National Security, LLC. All rights +reserved. This program was produced under U.S. Government contract +89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +operated by Triad National Security, LLC for the U.S. Department of +Energy/National Nuclear Security Administration. All rights in the +program are reserved by Triad National Security, LLC, and the +U.S. Department of Energy/National Nuclear Security +Administration. The Government is granted for itself and others acting +on its behalf a nonexclusive, paid-up, irrevocable worldwide license +in this material to reproduce, prepare derivative works, distribute +copies to the public, perform publicly and display publicly, and to +permit others to do so. + +This program is open source under the BSD-3 License. Redistribution +and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE diff --git a/convergence.cpp b/convergence.cpp new file mode 100644 index 000000000..e230ac278 --- /dev/null +++ b/convergence.cpp @@ -0,0 +1,115 @@ +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights +// reserved. This program was produced under U.S. Government contract +// 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +// operated by Triad National Security, LLC for the U.S. Department of +// Energy/National Nuclear Security Administration. All rights in the +// program are reserved by Triad National Security, LLC, and the +// U.S. Department of Energy/National Nuclear Security +// Administration. The Government is granted for itself and others acting +// on its behalf a nonexclusive, paid-up, irrevocable worldwide license +// in this material to reproduce, prepare derivative works, distribute +// copies to the public, perform publicly and display publicly, and to +// permit others to do so. + +#include +#include +#include +#include + +#include "portability.hpp" +#include "spiner_types.hpp" +#include "databox.hpp" +#include "interpolation.hpp" + +using Spiner::DataBox; +using Spiner::RegularGrid1D; + +const std::string outname = "convergence.dat"; + +constexpr Real KX = 2; +constexpr Real KY = 3; +constexpr Real KZ = 4; + +constexpr Real xmin = 0; +constexpr Real xmax = 1; + +constexpr int NGRIDS = 4; +Real errors[NGRIDS]; +constexpr Real NCOARSE[NGRIDS] = {8,32,128,512}; +constexpr int NFINE = 1024; + +inline Real testFunction(Real z, Real y, Real x) { + return sin(2*M_PI*KX*x)*sin(2*M_PI*KY*y)*sin(2*M_PI*KZ*z); +} + +int main() { + RegularGrid1D gfine(xmin,xmax,NFINE); + + std::cout << "Convergence test for Spiner" << std::endl; + std::cout << std::scientific; + std::cout.precision(15); + + #ifdef PORTABILITY_STRATEGY_KOKKOS + Kokkos::initialize(); + #endif + { + for (int i = 0; i < NGRIDS; i++) { + int n = NCOARSE[i]; + Real* data = (Real*)PORTABLE_MALLOC(sizeof(Real)*n*n*n); + std::cout << "\tCoarse resolution = " << n << std::endl; + DataBox db(data,n,n,n); + for(int d = 0; d < db.rank(); d++) { + db.setRange(d,xmin,xmax,n); + } + std::cout << "\t\tFilling DataBox" << std::endl; + portableFor("filling databox", + 0,n,0,n,0,n, + PORTABLE_LAMBDA(const int iz, + const int iy, + const int ix) { + Real z = db.range(2).x(iz); + Real y = db.range(1).x(iy); + Real x = db.range(0).x(ix); + db(iz,iy,ix) = testFunction(z,y,x); + }); + std::cout << "\t\tInterpolating..." << std::endl; + errors[i] = 0; + portableReduce("interpolating", + 0,NFINE,0,NFINE,0,NFINE, + PORTABLE_LAMBDA(const int iz, + const int iy, + const int ix, + Real& reduced) { + Real z = gfine.x(iz); + Real y = gfine.x(iy); + Real x = gfine.x(ix); + Real f_interp = db.interpToReal(z,y,x); + Real f_true = testFunction(z,y,x); + Real difference = f_interp - f_true; + reduced += difference*difference; + }, + errors[i]); + errors[i] = sqrt(fabs(errors[i])) / (NFINE*NFINE*NFINE); + std::cout << "\t\t...error = " << errors[i] << std::endl; + PORTABLE_FREE(data); + } + } + #ifdef PORTABILITY_STRATEGY_KOKKOS + Kokkos::finalize(); + #endif + + std::cout << "Saving convergence results to: " << outname << std::endl; + std::ofstream outfile; + outfile.open(outname); + outfile.precision(15); + outfile << std::scientific; + outfile << "# [0]:resolution, [1]:error" << std::endl; + for (int i = 0; i < NGRIDS; i++) { + outfile << NCOARSE[i] << "\t" << errors[i] << std::endl; + } + outfile.close(); + std::cout << "Done!" << std::endl; + + return 0; +} + diff --git a/databox.hpp b/databox.hpp new file mode 100644 index 000000000..0d4a18678 --- /dev/null +++ b/databox.hpp @@ -0,0 +1,912 @@ +#ifndef _SPINER_DATABOX_HPP_ +#define _SPINER_DATABOX_HPP_ +//====================================================================== +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights +// reserved. This program was produced under U.S. Government contract +// 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +// operated by Triad National Security, LLC for the U.S. Department of +// Energy/National Nuclear Security Administration. All rights in the +// program are reserved by Triad National Security, LLC, and the +// U.S. Department of Energy/National Nuclear Security +// Administration. The Government is granted for itself and others acting +// on its behalf a nonexclusive, paid-up, irrevocable worldwide license +// in this material to reproduce, prepare derivative works, distribute +// copies to the public, perform publicly and display publicly, and to +// permit others to do so. +//====================================================================== + +#include +#include +#include +#include +#include +#include +#include + +#ifdef SPINER_USE_HDF +#include "hdf5.h" +#include "hdf5_hl.h" +#endif + +#include "ports-of-call/portability.hpp" +#include "ports-of-call/portable_arrays.hpp" +#include "spiner_types.hpp" +#include "interpolation.hpp" +#include "sp5.hpp" + +// TODO: get named indices working +// TODO: If asserts are too slow, remove them. + +namespace Spiner { + + enum class IndexType { Interpolated = 0, Named = 1, Indexed = 2 }; + enum class DataStatus {empty, shallow_slice, allocated_hostonly}; + constexpr int MAXRANK = PortableMDArray::MAXDIM; + + class DataBox { + public: + + // Base constructor + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) DataBox() + : rank_(0) + , status_(DataStatus::empty) + , data_(nullptr) + {} + + // Rank constructors w/ pointer + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, int nx1) + : rank_(1) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx1); + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, int nx2, int nx1) + : rank_(2) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx2,nx1); + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, + int nx3, int nx2, int nx1) + : rank_(3) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx3,nx2,nx1); + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, + int nx4, int nx3, + int nx2, int nx1) + : rank_(4) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx4,nx3,nx2,nx1); + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, + int nx5, int nx4, + int nx3, int nx2, int nx1) + : rank_(5) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx5,nx4,nx3,nx2,nx1); + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(Real* data, + int nx6, int nx5, int nx4, + int nx3, int nx2, int nx1) + : rank_(6) + , status_(DataStatus::shallow_slice) + , data_(data) + { + dataView_.NewPortableMDArray(data, nx6,nx5,nx4,nx3,nx2,nx1); + setAllIndexed_(); + } + + // Rank constructors w/o pointer + inline __attribute__((nothrow)) DataBox(int nx1) + : rank_(1) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx1)) + { + dataView_.NewPortableMDArray(data_, nx1); + setAllIndexed_(); + } + inline __attribute__((nothrow)) DataBox(int nx2, int nx1) + : rank_(2) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx2*nx1)) + { + dataView_.NewPortableMDArray(data_, nx2, nx1); + setAllIndexed_(); + } + inline __attribute__((nothrow)) DataBox(int nx3, int nx2, int nx1) + : rank_(3) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx3*nx2*nx1)) + { + dataView_.NewPortableMDArray(data_, nx3, nx2, nx1); + setAllIndexed_(); + } + inline __attribute__((nothrow)) DataBox(int nx4, int nx3, int nx2, int nx1) + : rank_(4) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx4*nx3*nx2*nx1)) + { + dataView_.NewPortableMDArray(data_, nx4, nx3, nx2, nx1); + setAllIndexed_(); + } + inline __attribute__((nothrow)) + DataBox(int nx5, int nx4, + int nx3, int nx2, int nx1) + : rank_(5) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx5*nx4*nx3*nx2*nx1)) + { + dataView_.NewPortableMDArray(data_, nx5, nx4, nx3, nx2, nx1); + setAllIndexed_(); + } + inline __attribute__((nothrow)) + DataBox(int nx6, int nx5, int nx4, + int nx3, int nx2, int nx1) + : rank_(6) + , status_(DataStatus::allocated_hostonly) + , data_((Real*)malloc(sizeof(Real)*nx6*nx5*nx4*nx3*nx2*nx1)) + { + dataView_.NewPortableMDArray(data_, nx6, nx5, nx4, nx3, nx2, nx1); + setAllIndexed_(); + } + + // Copy and move constructors. ALL SHALLOW + inline __attribute__((nothrow)) DataBox(PortableMDArray A) + : rank_(A.GetRank()) + , status_(DataStatus::shallow_slice) + , data_(A.data()) + , dataView_(A) + { + setAllIndexed_(); + } + inline __attribute__((nothrow)) DataBox(PortableMDArray& A) + : rank_(A.GetRank()) + , status_(DataStatus::shallow_slice) + , data_(A.data()) + , dataView_(A) + { + setAllIndexed_(); + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(const DataBox& src) + : rank_(src.rank_) + , status_(DataStatus::shallow_slice) + , data_(src.data_) + { + setAllIndexed_(); + dataView_.InitWithShallowSlice(src.dataView_,6,0,src.dim(6)); + for (int i = 0; i < rank_; i++) { + indices_[i] = src.indices_[i]; + grids_[i] = src.grids_[i]; + } + } + + // Destructor + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) ~DataBox() { free_(); } + + // Slice constructor + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox(const DataBox& b, + const int dim, + const int indx, + const int nvar); + +#ifdef SPINER_USE_HDF + // HDF5 constructors + inline DataBox(const std::string& filename) { loadHDF(filename); } + inline DataBox(hid_t loc, const std::string& groupname) { + loadHDF(loc, groupname); + } +#endif // SPINER_USE_HDF + + // Read an array, shallow + inline void setArray(PortableMDArray& A); + + // Equivalent to NewPortableMDArray. + // Note that it's destructive! + inline void resize(int nx1); + inline void resize(int nx2, int nx1); + inline void resize(int nx3, int nx2, int nx1); + inline void resize(int nx4, int nx3, int nx2, int nx1); + inline void resize(int nx5, int nx4, int nx3, int nx2, int nx1); + inline void resize(int nx6, int nx5, int nx4, int nx3, int nx2, int nx1); + + // Index operators + // By reference + PORTABLE_INLINE_FUNCTION Real &operator() (const int n) { + return dataView_(n); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n2, const int n1) { + return dataView_(n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n3, const int n2, + const int n1) { + return dataView_(n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n4, const int n3, + const int n2, const int n1) { + return dataView_(n4,n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n5, const int n4, + const int n3, const int n2, + const int n1) { + return dataView_(n5,n4,n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n6, const int n5, + const int n4, const int n3, + const int n2, const int n1) { + return dataView_(n6,n5,n4,n3,n2,n1); + } + + // By value + PORTABLE_INLINE_FUNCTION Real &operator() (const int n) const { + return dataView_(n); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n2, + const int n1) const { + return dataView_(n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n3, + const int n2, + const int n1) const { + return dataView_(n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n4, + const int n3, + const int n2, + const int n1) const { + return dataView_(n4,n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n5, + const int n4 , + const int n3, + const int n2, + const int n1) const { + return dataView_(n5,n4,n3,n2,n1); + } + PORTABLE_INLINE_FUNCTION Real &operator() (const int n6, + const int n5, + const int n4, + const int n3, + const int n2, + const int n1) const { + return dataView_(n6,n5,n4,n3,n2,n1); + } + + // Slice operation + PORTABLE_INLINE_FUNCTION + DataBox slice(const int dim, + const int indx, + const int nvar) const { + return DataBox(*this, dim, indx, nvar); + } + PORTABLE_INLINE_FUNCTION DataBox slice(const int indx) const { + return slice(rank_,indx,1); + } + PORTABLE_INLINE_FUNCTION DataBox slice(const int ix2, const int ix1) const { + //DataBox a(*this, rank_, ix2, 1); + //return DataBox(a, a.rank_, ix1, 1); + return slice(ix2).slice(ix1); + } + + // Reshape the view of the array + PORTABLE_INLINE_FUNCTION void reshape(int nx6, int nx5, int nx4, + int nx3, int nx2, int nx1) { + dataView_.Reshape(nx6,nx5,nx4,nx3,nx2,nx1); + } + PORTABLE_INLINE_FUNCTION void reshape(int nx5, int nx4, int nx3, + int nx2, int nx1) { + dataView_.Reshape(nx5,nx4,nx3,nx2,nx1); + } + PORTABLE_INLINE_FUNCTION void reshape(int nx4, int nx3, int nx2, int nx1) { + dataView_.Reshape(nx4,nx3,nx2,nx1); + } + PORTABLE_INLINE_FUNCTION void reshape(int nx3, int nx2, int nx1) { + dataView_.Reshape(nx3,nx2,nx1); + } + PORTABLE_INLINE_FUNCTION void reshape(int nx2, int nx1) { + dataView_.Reshape(nx2,nx1); + } + PORTABLE_INLINE_FUNCTION void reshape(int nx1) { + dataView_.Reshape(nx1); + } + + + // Interpolates whole DataBox to a real number, + // x1 is fastest index. xN is slowest. + PORTABLE_INLINE_FUNCTION Real + __attribute__((nothrow)) __attribute__((always_inline)) + interpToReal(const Real x) const; + PORTABLE_INLINE_FUNCTION Real + __attribute__((nothrow)) __attribute__((always_inline)) + interpToReal(const Real x2, + const Real x1) const; + PORTABLE_INLINE_FUNCTION Real + __attribute__((nothrow)) __attribute__((always_inline)) + interpToReal(const Real x3, + const Real x2, + const Real x1) const; + // Interpolates SLOWEST indices of databox to a new + // DataBox, interpolated at that slowest index. + // WARNING: requires memory to be pre-allocated. + // TODO: add 3d and higher interpFromDB if necessary + PORTABLE_INLINE_FUNCTION void interpFromDB(const DataBox& db, const Real x); + PORTABLE_INLINE_FUNCTION void interpFromDB(const DataBox& db, + const Real x2, const Real x1); + + // Setters + // NOTE: i ranges from 0 to N-1, where 0 is the FASTEST moving + // index, and N-1 is the slowest + // TODO: is this intuitive? + inline void setIndexType(int i, IndexType t) { + assert( 0 <= i && i < rank_ ); + indices_[i] = t; + } + inline void setRange(int i, RegularGrid1D g) { + setIndexType(i, IndexType::Interpolated); + grids_[i] = g; + } + inline void setRange(int i, Real xmin, Real xmax, int N) { + setRange(i,RegularGrid1D(xmin,xmax,N)); + } + + // Reshapes from other databox, but does not allocate memory. + // Does no checks that memory is available. + // Optionally copies shape of source with ndims fewer slowest-moving dimensions + PORTABLE_INLINE_FUNCTION void copyShape(const DataBox& db, const int ndims=0); + // Returns new databox with same memory and metadata + inline void copyMetadata(const DataBox& src); + +#ifdef SPINER_USE_HDF + inline herr_t saveHDF() const { return saveHDF(SP5::DB::FILENAME); } + inline herr_t saveHDF(const std::string& filename) const; + inline herr_t saveHDF(hid_t loc, const std::string& groupname) const; + inline herr_t loadHDF() { return loadHDF(SP5::DB::FILENAME); } + inline herr_t loadHDF(const std::string& filename); + inline herr_t loadHDF(hid_t loc, const std::string& groupname); +#endif + + // Reference accessors + inline IndexType& indexType(const int i) { return indices_[i]; } + inline RegularGrid1D& range(const int i) { return grids_[i]; } + + // Assignment and move, both perform shallow copy + PORTABLE_INLINE_FUNCTION DataBox& operator= (const DataBox& other); + inline void copy(const DataBox& src); + + // utility info + inline DataStatus dataStatus() { return status_; } + inline bool isReference() { return status_ == DataStatus::shallow_slice; } + inline bool ownsAllocatedMemory() { + return (status_ == DataStatus::empty + || status_ == DataStatus::allocated_hostonly); + } + inline bool operator== (const DataBox& other) const; + inline bool operator!= (const DataBox& other) const { return !(*this == other); } + + PORTABLE_INLINE_FUNCTION Real* data() const { return data_; } + PORTABLE_INLINE_FUNCTION Real min() const; + PORTABLE_INLINE_FUNCTION Real max() const; + PORTABLE_INLINE_FUNCTION int rank() const { return rank_; } + PORTABLE_INLINE_FUNCTION int size() const { return dataView_.GetSize(); } + PORTABLE_INLINE_FUNCTION int sizeBytes() const { + return dataView_.GetSizeInBytes(); + } + PORTABLE_INLINE_FUNCTION int dim(int i) const { return dataView_.GetDim(i); } + PORTABLE_INLINE_FUNCTION void range(int i, + Real& min, Real& max, + Real& dx, int& N) const; + PORTABLE_INLINE_FUNCTION RegularGrid1D range(int i) const; + PORTABLE_INLINE_FUNCTION IndexType indexType(const int i) const { + return indices_[i]; + } + + private: + int rank_; // after dataView_ b/c dataView_ should be initialized first + DataStatus status_; + Real* data_; // sometimes we manage this and sometimes we don't + PortableMDArray dataView_; // always used + IndexType indices_[MAXRANK]; + RegularGrid1D grids_[MAXRANK]; + + PORTABLE_INLINE_FUNCTION void setAllIndexed_(); + PORTABLE_INLINE_FUNCTION bool canInterpToReal_(const int interpOrder) const; + inline std::string gridname_(int i) const { + return SP5::DB::GRID_FORMAT[0] + std::to_string(i+1) + SP5::DB::GRID_FORMAT[1]; + } + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + void free_() { + if (status_ == DataStatus::allocated_hostonly) free(data_); + } + }; + + // Slice constructor + PORTABLE_INLINE_FUNCTION __attribute__((nothrow)) + DataBox::DataBox(const DataBox& b, + const int dim, + const int indx, + const int nvar) { + data_ = b.data_; + status_ = DataStatus::shallow_slice; + dataView_.InitWithShallowSlice(b.dataView_,dim,indx,nvar); + rank_ = dataView_.GetRank(); + for (int i = 0; i < rank_; i++) { + indices_[i] = b.indices_[i]; + grids_[i] = b.grids_[i]; + } + } + + // Read an array, shallow + inline void DataBox::setArray(PortableMDArray& A) { + dataView_ = A; + rank_ = A.GetRank(); + setAllIndexed_(); + } + + // Allocate memory of constructed DataBox + inline void DataBox::resize(int nx1) { + assert( ownsAllocatedMemory() ) ; + free_(); + rank_ = 1; + data_ = (Real*)malloc(sizeof(Real)*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx1); + } + inline void DataBox::resize(int nx2, int nx1) { + assert( ownsAllocatedMemory() ); + free_(); + rank_ = 2; + data_ = (Real*)malloc(sizeof(Real)*nx2*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx2, nx1); + } + inline void DataBox::resize(int nx3, int nx2, int nx1) { + assert( ownsAllocatedMemory() ); + free_(); + rank_ = 3; + data_ = (Real*)malloc(sizeof(Real)*nx3*nx2*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx3, nx2, nx1); + } + inline void DataBox::resize(int nx4, int nx3, int nx2, int nx1) { + assert( ownsAllocatedMemory() ); + free_(); + rank_ = 4; + data_ = (Real*)malloc(sizeof(Real)*nx4*nx3*nx2*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx4, nx3, nx2, nx1); + } + inline void DataBox::resize(int nx5, int nx4, int nx3, int nx2, int nx1) { + assert( ownsAllocatedMemory() ); + free_(); + rank_ = 5; + data_ = (Real*)malloc(sizeof(Real)*nx5*nx4*nx3*nx2*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx5, nx4, nx3, nx2, nx1); + } + inline void DataBox::resize(int nx6, int nx5, int nx4, + int nx3, int nx2, int nx1) { + assert( ownsAllocatedMemory() ); + free_(); + rank_ = 6; + data_ = (Real*)malloc(sizeof(Real)*nx6*nx5*nx4*nx3*nx2*nx1); + setAllIndexed_(); + dataView_.NewPortableMDArray(data_, nx6, nx5, nx4, nx3, nx2, nx1); + } + + PORTABLE_INLINE_FUNCTION Real DataBox::interpToReal(const Real x) const { + assert( canInterpToReal_(1) ); + return grids_[0](x,dataView_); + } + + PORTABLE_INLINE_FUNCTION Real + __attribute__((nothrow)) __attribute__((always_inline)) + DataBox::interpToReal(const Real x2, + const Real x1) const { + assert( canInterpToReal_(2) ); + int ix1, ix2; + weights_t w1, w2; + grids_[0].weights(x1,ix1,w1); + grids_[1].weights(x2,ix2,w2); + // TODO: prefectch corners for speed? + // TODO: re-order access pattern? + return (w2[0]*(w1[0]*dataView_(ix2,ix1) + +w1[1]*dataView_(ix2,ix1+1)) + + w2[1]*(w1[0]*dataView_(ix2+1,ix1) + +w1[1]*dataView_(ix2+1,ix1+1))); + /* + return ( w2[0]*w1[0]*dataView_(ix2, ix1 ) + + w2[0]*w1[1]*dataView_(ix2, ix1+1) + + w2[1]*w1[0]*dataView_(ix2+1, ix1 ) + + w2[1]*w1[1]*dataView_(ix2+1, ix1+1)); + */ + } + + PORTABLE_INLINE_FUNCTION Real + __attribute__((nothrow)) __attribute__((always_inline)) + DataBox::interpToReal(const Real x3, + const Real x2, + const Real x1) const { + assert( canInterpToReal_(3) ); + int ix[3]; + weights_t w[3]; + grids_[0].weights(x1,ix[0],w[0]); + grids_[1].weights(x2,ix[1],w[1]); + grids_[2].weights(x3,ix[2],w[2]); + // TODO: prefect corners for speed? + // TODO: re-order access pattern? + return (w[2][0]*(w[1][0]*(w[0][0]*dataView_(ix[2],ix[1],ix[0]) + +w[0][1]*dataView_(ix[2],ix[1],ix[0]+1)) + +(w[1][1]*(w[0][0]*dataView_(ix[2],ix[1]+1,ix[0]) + +w[0][1]*dataView_(ix[2],ix[1]+1,ix[0]+1)))) + + w[2][1]*(w[1][0]*(w[0][0]*dataView_(ix[2]+1,ix[1],ix[0]) + +w[0][1]*dataView_(ix[2]+1,ix[1],ix[0]+1)) + + w[1][1]*(w[0][0]*dataView_(ix[2]+1,ix[1]+1,ix[0]) + +w[0][1]*dataView_(ix[2]+1,ix[1]+1,ix[0]+1)))); + /* + return ( w[2][0]*w[1][0]*w[0][0]*dataView_(ix[2], ix[1], ix[0] ) + + w[2][0]*w[1][0]*w[0][1]*dataView_(ix[2], ix[1], ix[0]+1) + + w[2][0]*w[1][1]*w[0][0]*dataView_(ix[2], ix[1]+1, ix[0] ) + + w[2][0]*w[1][1]*w[0][1]*dataView_(ix[2], ix[1]+1, ix[0]+1) + + w[2][1]*w[1][0]*w[0][0]*dataView_(ix[2]+1, ix[1], ix[0] ) + + w[2][1]*w[1][0]*w[0][1]*dataView_(ix[2]+1, ix[1], ix[0]+1) + + w[2][1]*w[1][1]*w[0][0]*dataView_(ix[2]+1, ix[1]+1, ix[0] ) + + w[2][1]*w[1][1]*w[0][1]*dataView_(ix[2]+1, ix[1]+1, ix[0]+1)); + */ + } + + PORTABLE_INLINE_FUNCTION void DataBox::interpFromDB(const DataBox& db, + const Real x) { + assert( db.indices_[db.rank_-1] == IndexType::Interpolated ); + assert( db.grids_[db.rank_-1].isWellFormed() ); + assert( size() == (db.size() / db.dim(db.rank_)) ); + + int ix; + weights_t w; + copyShape(db,1); + + db.grids_[db.rank_-1].weights(x,ix,w); + DataBox lower(db.slice(ix)), upper(db.slice(ix+1)); + //lower = db.slice(ix); + //upper = db.slice(ix+1); + for(int i = 0; i < size(); i++) { + dataView_(i) = w[0]*lower(i) + w[1]*upper(i); + } + } + + PORTABLE_INLINE_FUNCTION void DataBox::interpFromDB(const DataBox& db, + const Real x2, + const Real x1) { + assert( db.rank_ >= 2 ); + assert( db.indices_[db.rank_-1] == IndexType::Interpolated ); + assert( db.grids_[db.rank_-1].isWellFormed() ); + assert( db.indices_[db.rank_-2] == IndexType::Interpolated ); + assert( db.grids_[db.rank_-2].isWellFormed() ); + assert( size() == (db.size() / (db.dim(db.rank_)*db.dim(db.rank_-1))) ); + + int ix2,ix1; + weights_t w2,w1; + copyShape(db,2); + + db.grids_[db.rank_-2].weights(x1, ix1, w1); + db.grids_[db.rank_-1].weights(x2, ix2, w2); + DataBox corners[2][2]{{db.slice(ix2, ix1 ), db.slice(ix2+1, ix1 )}, + {db.slice(ix2, ix1+1 ), db.slice(ix2+1, ix1+1 )}}; + // copyShape(db,2); + // + // db.grids_[db.rank_-2].weights(x1, ix1, w1); + // db.grids_[db.rank_-1].weights(x2, ix2, w2); + //corners[0][0] = db.slice(ix2, ix1 ); + //corners[1][0] = db.slice(ix2, ix1+1 ); + //corners[0][1] = db.slice(ix2+1, ix1 ); + //corners[1][1] = db.slice(ix2+1, ix1+1 ); + /* + for (int i = 0; i < size(); i++) { + dataView_(i) = ( w2[0]*w1[0]*corners[0][0](i) + + w2[0]*w1[1]*corners[1][0](i) + + w2[1]*w1[0]*corners[0][1](i) + + w2[1]*w1[1]*corners[1][1](i)); + } + */ + for (int i = 0; i < size(); i++) { + dataView_(i) = ( w2[0]*(w1[0]*corners[0][0](i) + + w1[1]*corners[1][0](i)) + + w2[1]*(w1[0]*corners[0][1](i) + + w1[1]*corners[1][1](i))); + } + } + + // Reshapes from other databox, but does not allocate memory. + // Does no checks that memory is available. + // Optionally copies shape of source with ndims fewer slowest-moving dimensions + PORTABLE_INLINE_FUNCTION void DataBox::copyShape(const DataBox& db, + const int ndims) { + rank_ = db.rank_ - ndims; + int dims[MAXRANK]; + for (int i = 0; i < MAXRANK; i++) dims[i] = 1; + setAllIndexed_(); // TODO: can remove + for (int i = rank_ - 1; i >= 0; i--) dims[i] = db.dim(i+1); + reshape(dims[5],dims[4],dims[3],dims[2],dims[1],dims[0]); + rank_ = db.rank_ - ndims; + for (int i = 0; i < rank_; i++) { + indices_[i] = db.indices_[i]; + grids_[i] = db.grids_[i]; + } + } + // reallocates and then copies shape from other databox + // everything but the actual copy in a deep copy + inline void DataBox::copyMetadata(const DataBox& src) { + resize(src.dim(6),src.dim(5),src.dim(4), + src.dim(3),src.dim(2),src.dim(1)); + rank_ = src.rank_; // resize sets rank + for (int i = 0; i < rank_; i++) { + grids_[i] = src.grids_[i]; + indices_[i] = src.indices_[i]; + } + } + +#ifdef SPINER_USE_HDF + inline herr_t DataBox::saveHDF(const std::string& filename) const { + herr_t status; + hid_t file; + + file = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT); + status = saveHDF(file, SP5::DB::GRPNAME); + status += H5Fclose(file); + return status; + } + + inline herr_t DataBox::saveHDF(hid_t loc, const std::string& groupname) const { + hid_t group, grids; + herr_t status = 0; + + std::vector dims_int(rank_); + for (int i = 0; i < rank_; i++) dims_int[i] = dim(i+1); + + std::vector dims_hsize_t(rank_); + for (int i = 0; i < rank_; i++) dims_hsize_t[i] = dim(rank_ - i); + + std::vector index_types(rank_); + for (int i = 0; i < rank_; i++) { + index_types[i] = static_cast(indices_[i]); + } + + // Greate group + group = H5Gcreate(loc, groupname.c_str(), + H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + + // Record rank as an attribute + status += H5LTset_attribute_int(loc, groupname.c_str(), + SP5::DB::RANKNAME, + &rank_, 1); + + // Index types + status += H5LTset_attribute_int(loc, groupname.c_str(), + SP5::DB::IDXSNAME, + index_types.data(), rank_); + status += H5LTset_attribute_string(loc, groupname.c_str(), + SP5::DB::IDXINFONAME, + SP5::DB::IDXINFO); + + // Dimensions of the PortableMDArray, set as an attribute + status += H5LTset_attribute_int(loc, groupname.c_str(), + SP5::DB::DIMSNAME, + dims_int.data(), + rank_); + + // Save the PortableMDArray, in a human-readable shape + status += H5LTmake_dataset(group, SP5::DB::DSETNAME, + rank_, dims_hsize_t.data(), + H5T_REAL, dataView_.data()); + + // Grids + grids = H5Gcreate(group, SP5::DB::GRIDNAME, + H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + for (int i = 0; i < rank_; i++) { + if (indices_[i] == IndexType::Interpolated) { + + status += grids_[i].saveHDF(grids, gridname_(i).c_str()); + } + } + status += H5Gclose(grids); + status += H5Gclose(group); + return status; + } + + inline herr_t DataBox::loadHDF(const std::string& filename) { + herr_t status; + hid_t file = H5Fopen(filename.c_str(), + H5F_ACC_RDONLY, H5P_DEFAULT); + status = loadHDF(file, SP5::DB::GRPNAME); + return status; + } + + inline herr_t DataBox::loadHDF(hid_t loc, const std::string& groupname) { + hid_t group, grids; + herr_t status = 0; + std::vector index_types; + std::vector dims(6,1); + + // Open group + group = H5Gopen(loc, groupname.c_str(), H5P_DEFAULT); + // Get rank + status += H5LTget_attribute_int(loc, groupname.c_str(), + SP5::DB::RANKNAME, + &rank_); + // Resize metadata fields + setAllIndexed_(); + + // Get dimensions + dims.resize(rank_); + status += H5LTget_attribute_int(loc, groupname.c_str(), + SP5::DB::DIMSNAME, + dims.data()); + + // Allocate PortableMDArray and read it in to buffer + free_(); + data_ = (Real*)malloc(sizeof(Real) + *dims[5]*dims[4]*dims[3] + *dims[2]*dims[1]*dims[0]); + dataView_.NewPortableMDArray(data_, + dims[5], dims[4], dims[3], + dims[2], dims[1], dims[0]); + status += H5LTread_dataset(group, SP5::DB::DSETNAME, + H5T_REAL, dataView_.data()); + + // Get index types + index_types.resize(rank_); + status += H5LTget_attribute_int(loc, groupname.c_str(), + SP5::DB::IDXSNAME, + index_types.data()); + for (int i = 0; i < rank_; i++) { + indices_[i] = static_cast(index_types[i]); + } + + // Get grids + grids = H5Gopen(group, SP5::DB::GRIDNAME, H5P_DEFAULT); + for (int i = 0; i < rank_; i++) { + if (indices_[i] == IndexType::Interpolated) { + status += grids_[i].loadHDF(grids, gridname_(i).c_str()); + } + } + status += H5Gclose(grids); + + status += H5Gclose(group); + return status; + } +#endif // SPINER_USE_HDF + + // Performs shallow copy by default + PORTABLE_INLINE_FUNCTION DataBox& DataBox::operator= (const DataBox& src) { + if (this != &src) { + rank_ = src.rank_; + free_(); + status_ = DataStatus::shallow_slice; + data_ = src.data_; + dataView_.InitWithShallowSlice(src.dataView_,6,0,src.dim(6)); + for (int i = 0; i < rank_; i++) { + indices_[i] = src.indices_[i]; + grids_[i] = src.grids_[i]; + } + } + return *this; + } + + // Performs a deep copy + inline void DataBox::copy(const DataBox& src) { + copyMetadata(src); + for (int i = 0; i < src.size(); i++) dataView_(i) = src(i); + } + + inline bool DataBox::operator== (const DataBox& other) const { + if (rank_ != other.rank_) return false; + for (int i = 0; i < rank_; i++) { + if (indices_[i] != other.indices_[i]) return false; + if (indices_[i] == IndexType::Interpolated + && grids_[i] != other.grids_[i]) { + return false; + } + } + return dataView_ == other.dataView_; + } + + // TODO: should this be std::reduce? + PORTABLE_INLINE_FUNCTION Real DataBox::min() const { + Real min = std::numeric_limits::infinity(); + for (int i = 0; i < size(); i++) { + min = std::min(min,dataView_(i)); + } + return min; + } + + PORTABLE_INLINE_FUNCTION Real DataBox::max() const { + Real max = -std::numeric_limits::infinity(); + for (int i = 0; i < size(); i++) { + max = std::max(max,dataView_(i)); + } + return max; + } + + PORTABLE_INLINE_FUNCTION void DataBox::range(int i, + Real& min, Real& max, + Real& dx, int& N) const { + assert( 0 <= i && i < rank_ ); + assert( indices_[i] == IndexType::Interpolated ); + min = grids_[i].min(); + max = grids_[i].max(); + dx = grids_[i].dx(); + N = grids_[i].nPoints(); + } + + PORTABLE_INLINE_FUNCTION RegularGrid1D DataBox::range(int i) const { + assert( 0 <= i && i < rank_ ); + assert( indices_[i] == IndexType::Interpolated ); + return grids_[i]; + } + + PORTABLE_INLINE_FUNCTION void DataBox::setAllIndexed_() { + for (int i = 0; i < rank_; i++) { + indices_[i] = IndexType::Indexed; + } + } + + PORTABLE_INLINE_FUNCTION bool DataBox::canInterpToReal_(const int interpOrder) const { + if (rank_ != interpOrder) return false; + for( int i = 0; i < rank_; i++) { + if ( indices_[i] != IndexType::Interpolated ) return false; + if ( !(grids_[i].isWellFormed()) ) return false; + } + return true; + } + + inline DataBox getOnDeviceDataBox(const DataBox& a_host) + { +#ifdef PORTABILITY_STRATEGY_KOKKOS + using HS = Kokkos::HostSpace; + using DMS = Kokkos::DefaultExecutionSpace::memory_space; + constexpr const bool execution_is_host {std::is_same::value}; + if (execution_is_host) { + return a_host; + } else { + using memUnmanaged = Kokkos::MemoryUnmanaged; + using HostView_t = Kokkos::View; + using DeviceView_t = Kokkos::View; + using Kokkos::deep_copy; + Real* device_data = (Real*)PORTABLE_MALLOC(a_host.sizeBytes()); + DeviceView_t devView(device_data, a_host.size()); + HostView_t hostView(a_host.data(), a_host.size()); + deep_copy(devView, hostView); + DataBox a {devView.data(), + a_host.dim(6), a_host.dim(5), a_host.dim(4), + a_host.dim(3), a_host.dim(2), a_host.dim(1)}; + a.copyShape(a_host); + return a; + } +#else // no kokkos + return a_host; +#endif // kokkos + } + +} +#endif // _SPINER_DATABOX_HPP_ diff --git a/figs/convergence.pdf b/figs/convergence.pdf new file mode 100644 index 0000000000000000000000000000000000000000..03bf44591f59e78ba58e6708aa3b0118e820aafc GIT binary patch literal 223303 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�%{w2Y}LI-b_-=PjT4hU1tB! zA>n2|+kM-bx8)~tz6`iD7dQHxVFkO=qj7G zWj6`Lzi-YyCoX4a>1x`MilA5^EXBp6Vd=-<+m1iTRtwZk-kYKU$Ncj!8f_~y9@e?>en7IwW>%ZHrBORHF4V>GN76$BqXfJlHKpoE2rK#_eD1pE0=3xBXq{B)d?}%qtMLgu%5Vur%qK_mu#O z%(ei8b3|4d*EPTS9cal8^!JB(c_Yo+8NDE~4Tal2^Z|O|@QDwhd8!31psG^N3r&he zB6Lpb+E|4c;=x1!NI1||ywL zr#JBNOSZ*>Mjsb#C)%cSc0rBc$sZAfN0_zt|O3T>&HH0X-O; zxYu~KdVT{@qD3;g%ClGQ`_oN(vQ(buV!;x5tpyNTFVFzOXhyb-OgP)Q#kV&U?^40f zSX*NocGOt--TbT_Z_+E9Ax-)E9e9ZhGy+L&$jWztp+)hF{3c%#-;u+yRJDpJufnB_ z(;Wum9bJlyDP6hlq)*b^dL^%prC@gVfv_bShlI&|v^Enr23fi{>W(n24IriV=Bo}X z;4G>N+a9;sF8nf!@_97nREY12@Dv)iwEq#YrlI=hpoZ$0@2+4WMV=3U6rq{tO5l0> zW#C&W-d18bsC`>}?-L}PInXE#L)ZQ9<8xy)aR*$vtq{NreGTIhF3r852F79l9fhVK z8+bVl1Nd@54KJnQ1rNT39!}wkhuH+JZRRsWrPU?6>%;A0^4=z38+emf;YEY%{18a^ zbjv<+AtoW)NH^f=80ULvIY9AMgdY;-a(8a)>f7IC5H3%hn)7H6d~2!b*xccGJbf*? zOhT1I@Zo2^n-`~(uQJuf>=$Z|cz0Az*d)z1`|$AzbNROqO`lI!#S|Faf8;40&fbzI z{l03rcFxfaqoL1K^cYZb+HORcsMKvWnsRKLp03eT=-8E0zh(j4&q2o5*ceUD34kF6 zq6iogvZJYXab`GAj%yD#nHO+Q7pKb~7dl4guVSO@iOg<2RWiI!*wZRhy>IvW+hEJL zR**lnV;edSyj=@Vz`jGm6W;qZ3&bx!cuXdS7nT(VUA0{+rqkCRjZR%|Zh zc4P5=C-ll&F-^0xdRA;=z{9qyS_AMmTmt|!kuMy30#pXI3UCNC5pg{TB)S7;aL;Q> zwkgI7rhkHKQ+oF{z#wj3gcwB6nVlf0+4n(6w?%4^zK0KJ1n#4QaA=5fSy2m?#BChl zsdu7XWF^acVeSw(^Uq#{FUuIpL5MV&>*F2J4A}5bN(=YIYck@C z-i3pRG>09DNNai5P1pPpbhjF_UaYwY?*s#>n%==6Qd~rZmC~oe2rBRNpl0tE~TLFh3hIT9%;>j&^smVbbq*B zOrsX~^%^jyW^I3T>~)H>*yE&o4?& z($74CtYDftVORc7=D@Z6Fs8jG3sa6fOd1_b>0-`zq}f(JfGNi%4hTY&b2hloIrALF zFY<5qGLdsZQ|AxRqe;?qyF{yi!~4L3gcrhQ6(A;xM2`vU%z+q3>o@c}YB?WtDD`jj<7>&!Q{jXlkuIeL5 z7sxS%y!UL{AxJYz>&f0TRLFNX0ATS(k{?<U2=CV#8l52OAXq)IY`9?kMb|!EssPC>>b8PqQMYwV z1Rx`kvIsJ=GW0?o{y>iS6g?`Z^(1}T2hq5om5)dUosKU3eKDX1)9844gHto%P`82mDT6&*jK%z$Rp}lAI@4imM%_v7ZD>~Q8+)ZEqbp2bR^Fn+)O($e?~i#CS7I| zHWuFU?B5fh##5j4zVRh)$$|RU@;1$I0BBSn)F^`8@-Co%#zwknHs^2a#Fq^)<3p)v zpky(zxZkv*B7ME*a?+(%IRY_B?nmX=S}taGJBbdyT4X(ilEebsgfq2~JU4Eolb5+aTkg0BCEVC>F~HcBQPObG%s2yjRgOGJw2dAfjjS0)d!kK!GS4HjMUwdi&(`u&i@ zO_a82>Zu&2b~tVNB>*v0*C8MVVPVt83Yx*tHW>Fb5I6wDW$+XAb9`4l#b;PQ7V0Ps zZnbnhb8yX>IMqUD5+f9Ue5x?=ejspT0_1l349TwSdc4VMLtYeqOT9IOtY8g`MD1Mly zIa$b;zzQ8Y#btBf)dedO$--cG*=Lsdr#uDUH(;G92Znx zOuzWSI~bNBQKTfs_SwZ$XzHcVf7DK!#{=$Tiw&8K$KmtxI}Kl^D-Rx9-Q^t8?ocUp zBBT-kOSm4Y_EoFmhWlW9T;oD?TQ@lCeJBs+H13Q`(4V!8D1ZxE8v5~Ap!Ns6*5cPe zkiibjLsd}nG7}Pya031?8 z5B0W_K3X8|gxk?huAr~|&Z?jz3BhP?w9^aZMltG8TO4QGF0gya{b)Own7aT>>ukZA zX;nIbs)g;9X4a1%**Olh{8fgeH|i*o>^WR!GznsMja~Pk`gi=$1Z^6(SD$0_73_?p zU9TYQsM_ueK4p@7edH&px|SmGs!Mq-;7QVmyBeD&m)r}Q^& zDC2al`oa*_BSxL|h06VL@;7!OIQZM@@Yy7#}{-+)^m*4x;h z@R~dR1or#MMrN&xd{Skth5>}krtKrlx{`t7!XXigfp(}ft`mcZ!ZO3)jNMSuo0Esm z@%QjAEk1PzD|ICTuGBnR(CfuXgFoUF^#hJU#pY~Pn+y2_*#h5*y}GxuF8=7Pp`Q8ts}k3WY?m1CJ2wKgLt6 zX1I{gwWUGE!`$9Y866+%8&aX!RB3Oyy;4CC53wp5SGBhl?iS0mR+18_`GM){AR1xvMYzNdhzWt ztLAX{jz)=UJ05};Ny!-PIaqvhHva5P%B_jznqk+MKv}n7jw3~=*tm`_;IrJ&&k`&# ze*X8}W3knx$RRdl4Tff}@d5p-(}pS}Iu}_+?&T)Eb<14BGXNuYaqjI7xONKKH+=)- znxp77EBm#8)oTapy z^E(3A4htSSbU@9*;8joGUkxQJ`k9vxTl4fh-G`|e*8O$R4I?2dhI%yorXZR@l~}jT zCH{EHKHqXFoZnFmv9 zZ#V*u!9Fp>pem}lgAbKH$pg3TaEOBG7mfoV@WI&TPc~fmD(Nz_jbc?klm&Nii}fW! z_`G+mcZ4#M!A4;hfg9z|Q4m5{{Nsq!`D5Y*%7OcsM%{QiIQYuCL&|dDMq_hT>WZ`AULdyWh-{)8P|I8?oI;&77R_MV|>1FbOjSC59y@ zct7bos9=io!FYZ49_ah29FM#<533i9&}Hr9Aaq^!{$6-C;8{&kFmXH_KGV*gdV&T3Z0sm2x3g9e)O@+yx+n8 z6Gz{?U0y(EB8gk^wNW-nDJ9+v*zbVvs{*`*80iz7=xX1u1`!f&^%mach#3__MJ9+N zKSK_o`LMV8eRvh>z^Z@z_o{|x;E?9(4XuBIL$6kEh?PWa!k*PNxO517$uULflgK&) z2sf%y6nX=%&RB4Zvz+MNWhB5YN_ydgz2xkNu_V6cK#5RHH|EP?!<*yot2b=0|K-5cyv@o>8K^$~W!F!v$z2j3{qRb0?IL4pfmOcdoac(G z&Wa!aO+%Mp!sEQ)8ustKhcz{T@V;Z9K}}f+hwp$si17o_w^{TZ@+3oJI<+5}Lz7zL z6aED3?CJM{dL{3Uk<}_rgXN{8=;;z!0dYL#@Ds<=YeDOwSovkH&{JD&GHNeZbP8Ns>8tQ7FqJ69_X0!hC!YpV*&Z7IS#0$ z^aQnYUy3*Qh>{);lq-6*Z1STSj0yGnvEB`2wYxti3nQgAAU58L==FOd zkDDF#it6Id!-F}f3lF(9(|E5Usmp#-5-CkMGe2{IKUuda420IdBCsuuLm3g^CX zyfuebvnJwz1+ZicSoS4&_w#||p%21|MyW3EkQcTz`=CV={E)>g8hQfXj1*2gRc@>dsNcd z|LA7pZIJ7z9DtUhU`+lGjRvHIKv|N-QNAE<)ZGN=^=UPzI_hqM>IkIS<|;AG0Yyva z3N`>?ddMuWUKLqH90P|DtuOhn}P2v~MUWFSPy`dxyyzZJ& z@zM$W_lEQyAWrSK=4f=mSqZEhxCLV62;RvD{$sKX-+<4WE`v&f?q~7UJr_^Z0ajQt z5Q+0pS;Q@%Mz5XU9#{)^3urA|TC6@zOgu7&_Oxc@85AHibFG%~vx{>5AuzM~V;TRo zs94h*x+;a0%i!LBZA!d35K<$${m5~$Ako+Go}H<>aGpGqWe+U(BXcyKE8f}jA4#z6 zhC)Jv0weG@1^!Bcv1hZOL#*TPtVGyD+%%T4p+D(+TC*4S=q|~@vvbdp2=#xN-Cu~K zLRUjC_(AiPg><#9DfQW0OxKeE*E6pF=69F6Z(6vniw1uf1Lo9C!dn>&O* z|3)aCpo%^XZ4kIs->51+aG=p*#1m;1s8w-x4PL_;S3QMSS+Y5WX8UXrd#yq6`m>tl zY1*YZ@67zwI_s)cE*XI(u0^N)J{`%tf2s%amI5m~KaF^7&H;s%BvM)&zUAG>oezOD z>je{{n>@v|W8j#z<2vU<;E_DT^NQ5=>1a6O>lAEl+fK2M4(~(Ex&^ zsbdrhNGR$#CB{luGx9l0=?O-lS0jzrh-Z43hI}1G|NxNfaYRx97)K9eosimVz*a>1!+))W<*O>a%l@UBRuo_-YpKU3Olw<|r zrO_U_NQ?0*%e*YokD$%ff;w~GEDf5ib3d}VU^FU4L1$4G+k3KCZ@yfPo>0TxWrnw@ zQ@Gw-;Q7(4p9m%$DZvU<`W(4G%vfu}Jh30Gixp9#zIsZZ;+)FcC-Y-?^r#{U#7_U1 zSBCa3;f8kdP8x*mgrP-)BmqRdPW|X>35z13vN#$le-NsrSNfCXYeG^>_p=JMQ!hNC z{9DTl-U%&q#2><)qM$2o`)c#cVjG*~g#+sUqpT-UsRW<>30k>jYqy>$RwlMNkGvp8 z;!y5dth`?$irgHeAAHopLtNk623_&0gboXbq!iza!L zzJ+P|7@qx+I^=^~s6IcD{?hXq=WoZ6Pd6$llW3zYK+3+u$Yde7Fo^8zeK;+beY#>l z#g7!yzXGi8({^9?Y+wr>#~9?S0oBb z(Q*{YnuE{`YBSw_I${o(Pp~?OB3@PE3ZK! z#e?PxV(AfMU%{bI9LLM(x@vJC2^yGK4LAgYf!(;vh4?VN;0{8oS`FK`o~ajBn~5@R z|G~&svw?)eMHN@@W;@gl^o`HvZZ@o*=6GG8ZjHb&phpCx9SDjjsZ&mF%WANva90a` zYwi>3dOmQ@)TQF>JcO7)3UY51eKJe&`Chv#FjwgX_V|Q5qbWUH<3EPVAEpv|rW9;S z8r_*KeV=STDXyV>**Wr(x9)9MQ_32WX|S40#XDC6ttx?9MP52_CKSn~`XRK(o&J6O z->gUwxA@Fg&|n_LKjWDykgMRElb0Uu{r9Q^CQaeh;zEsA^R-+m?li3dWd5td$}<1O z;}fXB4092jbcF$AB$8$Fj0K1fZeF^k4uDk?y6eTm~st(moUiqtUm4>?=~^rBU`Pr7KO> z%hlR#wN(EHb|tV1_?VPW=B>Y>E%HB*M@t?g5z;fA%(^WpoSA(?LT>(=tLfxlZzBM~ znDWA)Y=a@fqmHO;<%O((+$Ho^7WbhnYIM6n=A(ro3eF20LLjX&K(A%s!uJ51R3(Pm zB=PO=5PYXtAwQ4;N2WtCZKz*LPHQ45SOX@KSDK=he6IflLt{&{W&_Vdo9TfWkb#h1 zi1e@7;V>>2PiOJ#r_S4-d6>QG_UNIIyixK_Rg?Ps30^pzO{Qtbg|z}-YA`JDT@cQc zjKj8%JHEZ>B~oy8_UoFGnWC}?&a!I6a$IU%XD7PnUtAgBHb|llAwS{Fx%vNzeH}$t z!%KP(h%ff-Mn9EE0r7=|`aJ~847Jh8<^n$;-ZQ`W^d-On>mU6Wu_bPSDJh-x9}w8A z!dYbDbR-;KMZ{LbK|;glu?qAB83LdWhgk*s*sDQ;?}h?>pKd+B6fYAhkjrnJu1s26 zsSp(4!hJ}J@v1XEVf=q#ch#Ly+O#~peS(W)hfG0V39Pv90j#SvtgY@ch$PEUtgV>) zch!1R%{z1BAYgRA>wR>Az%p&zJK(9rRH#as@Bx3o?_J@date8u15=s=eh%UsGjxD4 zWR+=ySd?^(%zD}YIRqpGn53>%&l)^sDd{PQD*F__^V{JeyM-6*BR3W+YVGqyTcyHh zrT4FA()Y~F*qYU7FDH4rWcnb)vu1+>KuxL4vKFE@cSL3k;Wii#SyrUn ziS%*8aGdxSw^nwve)JTS9dp572AN-Ss~OGSeiZyQ4=}E5o+O~ihLF7^Y3aYl{nXiI!h-#&f19dE0KvKglir;#he|)clOm7Kws4%XT3ZDcp8nW3GsC6 z-^XdTY@lpk=Pt|g8ML~TV0{i?S11w9eXR@&KtsQO7b)q>4sy=}USX|a1gUo7G?)&?Ugi)RhAC2cWMz>rW3eJO@P|${6CGXZY=-_2cg=uXnMldgruYtj;-+ z^`=w^MjUp7;=%kSoKXI;-nsyvkr?NmM8L{C?PjTh=Et0#urlWXnuKY_HKLOU%b_9V zW}YuN1g~N+#JKH-p6)B_)NN94w4Yw~Jv$pOw@64>YjncYD@F3{ZZ7$(tLK;k1 z7MfHOh;?<@$Lzm>sRG82ML}zqU9p3jIc->cCCGtwb%49Fkpq zwe@u$=qiGQ7cD+f(7$9?tfw0k-8}QvrzR)p$@W%(k)KE>A;rUo^UP zL;D7(Ro7UH-rW_Ku0IzqnE=3?sD4%?$Aj#Lr&4MFA@1EkPn*rxA?ru9eN^_qnJfch zDssP(QP9ffsP zJRtBPBZ1X0+GdXH#-ZEtTY48of*m`rzFw*CB7)w~w;?!h4jgJ5ElnoxL3| zx4DzbH$=YDK<@i&Did<|H&+-T_m}x0QF7Klg`GP5>U^+_SGNB!PrxP_5U0NlmPI<7;$q2E+o> z)Be9bdgZ(LwqHH6@PMo(dWyC8rtuqOD2rkm%h=smsSUDbH3i{{iZ(@CTtflu~M)-~cx=sqeqX*{$If_%B$*iqHWm`>{uD`bqr?cQV!lL#u4{eAb|iHUC=8LW*+R0P8bj{)bLZfKx$o7&;OYBXM%L5FA2$XGM)S zS@7>;MU)pmdYFE(&a)~+Tpau7>=AD)_`7Niv_;G3R~b2fYeQ)RaUe<`WU1QLN48XY zSxC-4aOpJl6B-jUMb>9O4QVTR&E_5zvf|^rR+GB zN{WK}Y95m&VRswBkA`N-aEO1DMg8Mom!n5oxh)e!uGIh)(oNP5L0DfMa~$uo2*VO- zvg@SfmH`Kw0ei}UE9}iiw`QDGEsH7n{_L7_cC}%dHfaAnL#5^xkv-o(!z8yZ784ds zupk_R*W71rX|dmmRPfs%Yy?;^nU6u9;s{|qJ)Kcm9`36j)(Izfk=i`-6jv}E+X_T- z5PaYm^0u#zX_7DfOY=#jP62wC`z1*CN;SG|KZPJNnf2qd+MVmOANQ^s&q z|9QEX9I#DunI`~6)t&g|C88t-$Xh-q> z&z<)9JBPimEMzYQe1&~zpHO-@X5lJbx7aD$zS`Uwp*nG}86!O%jGj!zljNj%8Q|^P z84lNWfcE5U{$AjYR%rJ}a}$UMKYh_Vf8yMJxs7esBrMT+eAi{itlT+(^XYi-K;#`nEjH69$+6ihIOyduJIU1U| zRGgiK&j7rajRKGj+yD$GfVaP(@b-e~P7wcoL)mJH9QQy24K5Y9u8oVOj+%hNy3Ghu zSed=zv8=?=nd76snUA+I7j6UI6;K0_&S@_v-TkGOx%dJL_0`C$Di`cW@g+gZtjmp~ z6W}kg(7@a`EXLndG!{^zPpih7miZ|ErA=F!LfSOPjI+0Qq3#N&dd?VotH2PLI16~T z6(h)8Q(a00h>AMoh!h#NHFl&4Bd#-zW2TI!f_L!EZFaEiL&V`8QW8?{sf)lKDG<1 zEu`G30Z9BO9DeW`=t!=B{OpL6&Vb=9VGjA(&-;|ZKreGq_AOxS6jLF4|J6sxqHAa_ z1nI;z6H&xPe>Uuj&;lrvH4B0=4bD8h0_wDHFQDZ}pYRB3 zP9#Ngra_p`b;kwU=jCNHNU>UepqD3}uwxR$!NeidjgW60@mbFc7!!~ z0kS5$r$nT_k&}+?1zxgb#o^@^FgF&E`lZ3d2i}h~y6g3YZdaKjFJ&c-p?Fx(9sRR>b(XXOFw|#) z6OvE&L+Y`b4;e$NraBdddjSf0R51)O|EfaT!Z3#>aCooYK(aGcWiBP{Inv=3jYEQo zzN$o)uphkr6T^i4yN(J5AZ=D*YYXs)4jf|9|(gXk3+b8KxGr9gMc9e>N7badp+0E1A8w)TMt6i)xXX3_kCW5uK`J zRi6cy!=RIPM*0gf;MD5*#3Bo8T~x*o+Rw-9!2gfI|7SS3Z2^vN`dpCYwMfs@@vTl0 zS95Z~z^SHPz~+G|Z7FcPT7ZX*{ix~N1lt6V+afKS@M5n7q3_E18>YikuPlbkfdPk; zZ-sQ;Y@}Y>Q!lwL1iQ_pUNY>bcBSF5it}$=Mbctq+O^7D#*<8?|Kx$;l7wWHE*p$UhPr z^t#Rak!0q8=y3MWu~#X!- zn~en-LMd$KaJGdM$=cN5$WQS)G!&WPE?vns1SYGh#WaF`5WXfjuu(|x{J5+>)%Mc| zvf5 z)q(Q}dzZTbV{^!yY?%{pLQEsi7)>-+Oiwj*IQsmZXWFwKnP)mUBXO3mQ=3Ug73(?> zpy;J@x71Ub#5NfqgE^~nmNCOn1yeG5&LWcp7wcKnkb$6QRb%vc1~oH|N<|azMf--o z*PBQj)lrBh;-cX|(APo~>fT>H9ci6I$mkDbUf>PG2+3>yi?~=BrbUccrfegeC;zZz zJt9!dk3N#c@Iw9!M%FJoz+E1Ury??=_dQV*p3~-aXKn)TpM3)OYB2xwcVj&pzhzuw z-^}pyiFp@}voDb@D=@1u;4l+1(~?@ar-&8PFZ-2qJ!eYotq#gWh4b}BOpb5%2Z3<; zn!%(`NpObg(wweUYs4_?Yu%2!*-LW(?XkhL8^hVTPZsh{2+me~fc;zG&MdOCaFS}x zX)uuL`z2;%k}4so#TrZuSL}apE(-dVwd6s2>Q8M^ZK$Ymi4RKU9r6j8AP=kuG4c@% z%f4AS<y9|FEm1+#mbW`DfT5;+p1oSUH2Joa>tzw9?X}=d)L;wex1K`2u=VrpPX+c+v}yNo-F4hY6G2DK zT|8{lbHi8)F%>z0fqSQ!4|1)DQ76;JRa8=_27~&DGI;8IUz+(T4HW8;CNg2xJyosh zQj}dMN2?P9%$5KPMG}A6x3^I_MKC_^U4Aqk%+>bbsX*ou|JH|di9ZJmgbpS>6Ti&6 z$5ch~hl#&&^nT#CN_Ik(tKmULRL05hMkTf;Mh^yMn?455 zyAjjIsKyBu5isRDzIL+67%jG&CU{O7oYaSNCnMy_kvaMpIJ5N0i!vV0-Qf;@zVU!S zPeTw+HI=;WNw7o5+#tH{fIc{=(VOlgWB}%0zlH;(LuKI|s5zr4m>bBnT-gz1TCUm) zjqku_T!I=wW^2(k-wu99YNEe;7cKQ0|6q#1XHBWXuAol|a84%ahr)PA2M84P)!~L8 z8#5XOWhu+eOvtR-kWpH8U?0IgQ}&;bQP-AT%@fd>fbo;B6XMMOg!YydMrHR75^`S4 zHivl1rYlpjU?&q8g6$Lt$2^x!$7W+kY2H47t+KCl;i-K0W5zGhS` zH#b7Mpbt9;)eh8RuD&4)X1`MS9GLP^VX6I)oi^{)%@JeahgH_z;UCd%WCUhVUm%z@ z)9VMlLn2o>Xn_x4g&U2$H!i*?BoKHaB``t(40RhWjW3!-MoB54ze8GwE39Lla2FV> zo9Hy6;@u3zS$le_!a3Y)2gd6LbLPNn1t_yRbS!N18B!;0`07gj+^7WrljH%I1k~Xm zyro+HFF$bq{clj+xFrO1BNtxgRn${P>rVO-?=8rDYEsxNqZ}+3It)~DR`Rngi6+DL z*90-(d{OtAd_1|F5V72pRu`p-0ntm1wmv!`m9FjhTu1&}Tb2(U3>Cq!!1sFzCoVG_ z#`u9BMJJ}lSskNQ_hGFnoU;P6Ro215w|vtLJ#5WZ?OgD$w&9SS-3$E};&;yIE8-t!PIr7O#2tgUH}3Y?Dq z+0guE1;|9I*G=L;y_;hGVcTIx2h(*ny>kI04+;c7HXmtwaoIKYcw-I?Ib+cENyy_0 zj<+fedEL&^OE0jkE6120-I`bli)H*e8afeRDufh(6jHj%lIHQJI$A*MlyOWVho@Am zAkOs&=z-2B=f`Ol{rX_i3<9=%5Gn$5@EjS}mg`yLtxDaD=@>%*L33pOo}k$3CBNeA zG<0(wT1kj+#0NLEa7$V2byHBeSMM%*9?Sp)TWaUNk|7fJyNtVFnxoex!-M4J2;#8E zpi>@sddm%y3omTGfjNJ;cQqT3xu^UKStLpFv`w8^8~bK35scn^Zr2IJz3n7X^T1}t z^45ZbImsK^9~@*K3@D4;{A}{_ug$LBLF6T$U6j^FhXVa?Ur7%eGMEg7&Up$-HBQW% z{Nbb=V{%-+@NRT;>P5crMCyf)ANk)4gHJ0C9Ji?hlQiwk7p^GXEDEbNp)rPATZu)& zR*^qB^p$rYLn?PnIVUTeA=9g$)?|O=q4kAjxQpIm1p_!icwzqyjKa=>-^CbuA+1F= z&u}?{3@atO|A@d#R(&CHXCTv4wS>*q>$H#_e$KdJxVKS-xRWvCRTf#pA*u*PtCDu0 zxWHzi(Cvq2fWV!3_e--giqBFAeGB1Shqi95b%;bD+m*)&8B+$gUs@_3y-alQ6jila zS9AEZM(;^=j_2V)^3DDux%DCieJ4wieg7cQQ&fSq<*790$HX_**$Z8d2}c0PC;&i4 z>FwpTv`WPtE(2QHytM&yX;MK(xNn62$JCX_L-~FGk|Ii$q^v1Y2`Ou~qEv*msH~MF z+4n4CS}c`N3YBG|n53a>Q-+x&6j?Gw)(J7z8T&An`Q7I}`h0(X_0r5d&t1+v=Y5v@ zKI!>7Y5ef&rR5Ekzx{yuGBZNE1z;|n`>{pDgdXuTWj(?ztF7(-(Y$(~ zJ9rett=+Y?Bj8T`ltgw)m#&Ou=gU_0M|@9Nk1&uPrQh9^EXL)lfv~m8*!dkAEPeR& z4iGnz4cTx!IEd^p8PwnvWPqbyXv~a={l<8D99F)2hjPTT3oaqFo8F;Va|NE>MSX?L z%&%EWv47jWjay3vUl&{w+5KJTZi|l5`pwU82kx)YdMcLTw*p}}-D>YCpnmxpUr*i6 z-fQ-}-K`IIiR>oV@(l$n$RBf_q>Bn<#u;|fMFGK?^M&(PeC-)$(1*T6C_00yWxFRr z>%4d2Ow$4B6l1co!dFl3D?>{TYG$ocF~b0jv6_U$9dY#)eeAG~>ZL1yvvS}8LSiTD zg!JwRG>~ljGO*xUQ@_S6`{bl<>(iFg9rWano!^XUi3$>0^*fWr_62Ale4sMs`j_48 zd4C^*OsE}m%QT`otv8Ex1FI0?$cOKi#SGzHaaiRC#Y}~#Vvatn+R=OU%ihJ16Zo$! z-SIp|zse-n6`w}P5IYjK_VqN$BE{%&oFU?73NOh8b<0PuK^sMB$`$4Ae zXwRb^9>+kjk++VD9Mf&&jOw*fpP@haJU#%-?sfq_M?i`ipQU%}=MERZ4Dt#RqPk9@ z>rruBFT9Sw96e?G2e*njPaWsM*zAx3H|)V$biuXQpwP7!bT?qQ0Wwj4&L*jf07k@_ z)H<@L;#pT;_UOL%b%VrW4LmIlr1>IFN&&vujxxf`HL-5@qNA>^IeKhl?F38EwQIaC zeZN2AUE2C*`_g+zXVSx}X%hinDA6e%5S@afEQ``#hCEsSu}Hl?3~4TNcyvWdybxoQ zL}Q2(nPIN3v_<&;a--;=d;~LfScb9nS84YX-t_sT;>dH4nu27Fp$Ih47LR2=pe34?!VkiiKcN1`k;f9jGq$16sNNLDZrTS9-wO2b zd3(29oi!k4wN2dokny(cbpOcA@|EaMtQRFN%G5dT` zs}%ajf|dY$Il*V>PI~39c{yo#8R45{Nb}%k{J!}4-B70HxOV|Ij9XWihyU<3I(*ZN zHujU6(C-pyk6a3^zcJ)3AwMKo4>^Y00K)M6md_=Qzv!&&?@c*|#qb1sp(nVoKPn?g z_O-JS!i}qJ`IqfLYLlO(n#$i1x37RpbwkgLnv+pg@x?AA-yHEY6)H(@ zuWJnia|fnJtedtLP#s#R>L80uv?ytV3a1Phx?|40m3IkfWwq znmGrK(-;px5_|t{Xot7xuD}DBo_i3h+gth)TjxqkRBVKDb9f9DsGRV2zlUL^%*ANk zbfr9DgbQ4Sdjx()yrZHA&g8L1cqT_j&N-eARk<>N&c1`oC1{^F;a%hpkQ@QmiVi{? z0!dU|yC6oOtrH%)Q7W9_n@Sdm>z;UC@1|jC2rCerAAscM-vQ7aX4C5Y0*8%Nt3f8d zKnN*8_?W0*|5UAXzDO6KqCObF7bX^TLw>qLZ2Gj1^efNWAVDOUq>#;bmERDGlW=}>1vaG39L@umnk<8gZB4q zq^6J0r6}JfHTbtQzkuz&;>QchL99CLv2kH5tL2?EC|nj6AY6?bJQZNSuZ3eoEVe2D zeLeI!(!UGR!57Jx?5x`RwILs9^D1XuT^-&aN+R#@419q>$|4Bf#<$)##a*cS_^yQQy)?6zGP zuvP%%*b8av5#Ew#QYCN2NYkz97@Mn6kjf3v^&&z2xHUyS`kYNf06CO9^gc&=EU&vYc<&BL5KSxhQMddpv`kRMs~hRi0_PO0HL zP>KvcQRoaeShO(M@c2|{-r>oul*YcwZ#*H@?WHUJcG8Ou+UWm|MzFtpvhy7zjq}6l zAdrHUdZ-lSa`%8mc?B3uW8N7YIC2coMNV5mp72*15I)rCe~22ST@KZ&_E4(LQu;tdsvqRp&J{>D+KV`E8za$v zI|OMMhK=L2BBc*9KdFx<^)U?E;!*HXunxl8KY=iKda<nIYd(+WJ zphFN~yPs`E>MXEo?GGk{4))%>B0tZeZn&BLq!|B3EU$9!t*+B zp|cswObErTM_4`HQ`YyPEG#Y-&X7SgPddUE8IH9HY|8CwFL?|)Vx)qO7+{YN zTtoI4s3c?X^KVA*=MsS=&0imEY^^+B+PnvN5h(zimsyaPNH5kp! zAAlAC3d<0o6PqLU9w*gx#wrj9QWmiFSNxemL=jSyPO)2UhQJ#4?c- z0<4;RWxAxqkjPqvDUl5|Cl^M&uhM>p9zgqNvLFIzT+N$T zT<>FA*a#lk5*|G7HO+XirrR8warjL3`+Y@X3M<3 zOIdCOZEa!EFHGOi z4^s4^=sh^xVX#BETN~U8{7tfrnamV1fse+5A?X~SrzpAQU~Opd0XpbA$+~;_lFUa0 z0l<-!IZ7Fe=YJ()HYJbj#SGq9mF(Aa4-SDQA^2^sY3)vs$9=irNO$ekayYQ%2%Hg7 zZ$n&*pRcN2P)vw)RdF$WWp%_KQ-!R7XhckltFMGz_%o-Ei3#wy<{EOs3z^sLyC45BM}FBf zh=h2CN=e+-C&+Ds^|n#;N#9$A8TaAEwxXjm6ik^o-Bj@nWcTzuE!Q#=5O?YR6*t$@ za>zDXTOL8uR@me?>kKnbM>*>6=BuxeIe|yO^r8lb$nBF_bu8;Wp$?Fh3WmBI5d}x4 zd&%Ggeu9cmIINat-@UtxTrv=-!qpq<5+MXXB~?W4bg=e53=?Eszm!u{Vss(LX;>zi zmPe#x*cZf`U#xdmRDZy4o@6B{givaCr8l@oG_UAvKQINxW@mlK7)ie`?(kb%zvwF| zl!9>Nc5>2pIfw@xhII>!6MK#S{g@nxk;9uRKHwb#_Kr!}tS45+xja?86s?L#J$M6> zHl!IQeI5Q_{@33Y&usDbCaZ0`2QZG;e89&7+e+K&K66JKQb)OW`CyZY9GC8;icVG) z#;2rk;x5pSUh`$+Z&FkUC$=HkNJ^jbqYn*Y_vS<0d-QiXENwmz?p6~)YRP>eUA*{F zbo6*arc@Mn>Z#!;RK3q>DZ6&A| z1^>E$z$a;+XhQaA0FgSmc*7vK$Z)V=!{AJqa$dq>5~Iz77*O3mAjsvCxgO?otph5t zLl|qr1ZCpTJ;{USlhHBu^waIG zc#`X9=h4`@ALZlJnr$ctst&EB3QT<)6k7 zb9e`T5lc89vi3CSWg6Vv>Q!8nz;`9(ds6_}!5p5v?!fBall3&F~X)u1)$4guE+ zavL8z#Fn?D@bX<_U8k2L(IkUiLmj`ZI-m*=MRZ8ie1k>8taj5ek5D zlTP+5nqs88>As2<;MPCNmQ>;8=<6$#ccC6CWN#x4s~BcKtz)*WcA}L246* zr}Y;LaVj{B6R~|k>IP*B`#wM9qmMhHQ?$aYy$`{=oIQ=KLf@If_}ida%S78xi?NW; z!Q_7WR{xfn4_zMkzV$jK#IVGuu1}6ejd;HPOC-Te(QjX2#kdq9I5 zBd&VrQ?Bh1_o4R#?4!O_l-I$#-vke*Ut`APIo>J2i*kh{chj@P=g zGcN328XXXvb#dZ`*GOD09CNR6`fe!RZoNqu9y=33gvO1Q|1fOcdR={z@d-hsKm+{U zcBSWOgj#XY9yv*|6lKDbtq6}>nb`sRcFy|8v5q#$eqX$02b%bVxOAPikAz%1Lg{Cu zikKBCZ5M zSx5`TY};C&WOWyIHRS}|H)?ofB`65Bi+#b8T5ii*;`H+v_!e&XmO#eRK!Go-xLyy= zNw5)UwI`get^2@J1mRO?V!VWg>3Q~xqHL87;>Hm-O%-?WBIRLBgBz5P1WBNQcfgjX zo?@F9Cq6h_eBeIHwF*?Q)LXdqQzF zFTDTeI(f>$a^fS^Au0K1zx*$o3bH?nEBi-zlrHgsin)_n)Nhjx8sF{J6C zE~~j$B6!yQ$PYgquQZS1hF%FvV3RX=;o5CQ*RCM8WzxOmT5#;G3ysZJrMwaI1qOte zYxd{C_SNhRS+|_LM5edwY*P(qB_bP+^!WrW2kSWlXrLJDw$vn9Ex}$14%7=6x}}5V zZFhD5X+6Y5qMd#@T}4JfLySN^cH)*I;m(pQsSf?!X2Cgu2M1-I=G`e`qSOXaa6Iv{*P6lUd+#RxCQwNj+dJYvEY1B#jb1d~)8PwA+WO zo5ca{;m86djO_>JtB;m@M1?-cb)}?RJnu+#ae&f&^us%d;v>3pY8NL`9LhBJ)Z8u( z7>)b?pM?-=UBg0yws6dWqH%?GeD&-KWND`{`xu~ASpxg|qt0oif@Slv+_(0POjg>} z$+?z~#+^Sco(vIWa-f}>%I>`%82~TEV8tDO-fH3-(>9<729@O{Vab;toS7ff#)>(H zTNx}jH_lcdHPlWS;Bac?oDddAYqG3!(XS*;Mro_vgLRuPSOkF8op+!r{bHb24Qtwh=DamO%}2I{Y&X^rpJ z8{9G5{Nb^``Qi~mgsSg~vGaXBU+C{SJlWif=-SnYx759aN%+LHrvv19e_8Z$YyO0~ zT;X1s3V5vN_eb#BSqmM4e9ckP=Xt(h$<){tb;kq^*F=05rBGwXK;M8Beh6`IeHP}Q$E?N#6_1s4dQj`W z7OdWq-PM-Ae`<}i#1mbDpv)C|*4y34<{2ZKhhUL8>gMem=e0khE$3;Kn{WM!Td9vk zx!p6$h&_Hfo%Z{u=G8krQyDGvg`Ljq7H_gS=Mk&~I_ zoE8l(3)(gMe6KF~6JJ}K@kOvh%HZsL0bc47_L(nthcOqbQZ-6Izo6mKfRF2@Ba4fF zNFgVFI~OlfT^pC0r~MMZ1GIhlvNRZ46rEUwM8}A(L)7`H6qTuJ*P-_W zyVFp>D^c?>D&0?1aRq4Z%j{MJZDB!&dMg7S&=3|xl;%i#xBIcRt9T&C1ubIBtpuUJ zcMzOFXMTRrIE0szxp*!&Lj$|%YPg93eilh_0ioEty%8)Tq>U-u`?7EJ3Xv{&6&Uor z+u@me3cH9(lAeShu{a%;q< zdBw97?ML69QCWZ2!PSI#-ZY-A9_SGNvz;CP3hMXeF7x`%U7qgjlpxPx-+nmbWrK*h z^_gj34URM)dJg7&9@5Gd?gPa<0hOiAaER7n>s<$V(_ei28+chLZJsVCqlJVjNvG3* z=W<*h8iuYjO2GQYH=qW8<9_hRQ)nefd>B@68TPIQm$j#UUA+` z7cb?&30uW)fDkBmTcYco+IPIXZEa_{A&yvnl5%U?d`R`eH?V2>P%%fK4P!X9jobb% zX@BQ|J=QhlFv(bo?3VVn^=sj;H=@?c#)f_UcEjUmGXj^--#TeyGkeUI1O6$63e|R5 zq1s&&vR+L2wF+L`wlIo5IYR${w%fvrS#w(%TcM5SpT{{QHDaW%&rJKPtLFu~CX!jG z8(}iBGT2G+%_QZ-9zzE1aVRvc9H+}dUJ~d+VcX@Go|3ygCudmo>)qXxwBQhzXCBaJ zkYplIVBFXo&N+B2Mr-Lk-p;1HF)(%bcGG=&ehOOc<$;Zawr>IG3;j9K zYNhwx!i+Fjzso$oO_$Z+t>-0BDJL0lRNInV*b@wA_Iob(AlPYJ_+-i}tG71i<_$vK zY=n1{s}RVR3&-NHPpyUUd69>!J+bh69y0j*!*KAfhYr)8>nSMiQDG19Z@UtxboV^T z(btdnR^db_>Xs|M8cdoErRdo^X7&DV&V2|S?uk%iBpAU-`gr8)qHh{1W{ef}lkJE4 zZ5z4;F1on}u7Ey!5GtIUeMF$>V~3%lPg+-}KK%Ew?oT7jL@l#lWpb{?XlQ}(WqGGT zTPUmDxNB}akRyor@rdF{>w9{Sdl$!_>W|5MS2#7=OaEE%X|Uny8}_v2-#Gfb9%d@! zS@lv9BUtjoKU^?z6UkV-p_BA#bJB=!=beYsb4PL&KDq|F#R|wiw7QHo?@2r{WxFZ) zf#=%I?biE*pfp@YXEbwwNX&@|Nv$p}ZrK92_B|@$61AR$hZXe`KqDwsLs=Ms%gJK& z03axj_CPW?vaOMd7yY^)MjiC$I-K9JM|?epsST(>pV$fwy8o#Sg^ZlX!8Q)5YVhS~ zpEye3BQBuxAM+qageH@8c%aE-7^)qX^6MTymp))nfOX5g&M9Ai_PPgq+J9URY6>w%fLAGAwB_KAxr0Srl^}g8n~LzR{IP%HlLt zBPnRpNRW+mduJ|leyWz^VKMC&Xx9H04Q^R~(*uD|5bC@)Fz9*Je8QgVes06uIL!~& z)&J@&YoA_c2^4;{_#jC7@N?=oHt7#t`#N^;q8aWhjT%sgb|r8=GfldOiq(t(k#a2nF%CY-kMP(N0$y^!;|EUz`oT z`oMpjEJtMME@R~Z;6JkJ-&vLv-VQ?hfzfre!>oVk!J7$}=^@?#KX&WE>g_I36A-DI zl70oyNEnli*!CN++Z$Q)+&!?jL;Jz47$=HOGzfDhpv|3_d78bZ+c!cO5tpi>25^ZJ z*K&MeJ%}#|--7W4b~8D}o&{jfTS`S1yM9SrluMaVDuW=ArLhMF$`6gV2}1g$vY_ZE z%7lZcKU^u@+0`;RI7MDBcB!%XavV?;C51gGYz)W_!=$Rj1+5pV5;|6h)zNPBo?QH~j0*(Jb)9b*wjQ3m^#I=&ml~NmAbV4_bYffzYZpqQaG3THSZ{ zZ>?ec=~~0)&f31i|6IQ%*e&c#!{~w9Ek}kvrjF#&1D5rL@$3f3;~V_BjT2Bm8+Fd& zyi=gwCA(#j$j3q&jzZ_oieF8$@;{_Qq8XcR$;AoW!da;aLPn6{-W#%{Se;m)PkJ{) zeIki^+B&64+9}iz6(Me}I;Du1s5RY!!M+@*MUX{5_c`mVBUkV ze1KsN3gL|Srk(4D6xIE=9WaI0`i-XXDd9Gbxi9aRL3X{51%48tZF0+c(s=0mL$cDEQjP2ZFwR6*2IG) zJ-Zll7BO!8tYBlY?n{n168P~#SHwL%%r1{w*E6c|UFo1ryCE9nQHC2t>@#H^9|9Lc z5Hw;#hHkg0GB@IL5=1AIeB(rYhr;q80yW>FdcGa!`d#t@wDxQWEY_o8v}#Y4sqR0tQhL5A`Ga_}Pn zbx**FwFF+EeQu}J0xVUFVyUO_fH+K?Y*wOTc8L}%eN%v0m;@bERLu{+3U%odKwmGi zQyUxuqwUC*;?c`Rc%!N4UjVAU1zP#PFOBy9VTYM(3b0sXfn4sR{VU)(3`C+5sKcv?sHQUiVB?wP=rH`#~{1OZ&d3s7245|R(#vY4dy=?hrb(?u4nT0dgR!mc5P zwPw*W-Z`=XhS{&1;=c;ainXrfu)9_^fIxvXJiF~RuO|cE3ltV5Skm+Q4gf(IfB|F* z;Q@QJwi|5K54gFU+#*ZhcwXEF>a1+ZN^wIfnj^I@K^#k$4=%~mYhc@Iu*?T4;M6}w zPyPN8y>q1v?^wn975dQPtHBHgMJFI)BJ+_Mw;%BNn08TzfakOWbz7Bi_M^lZwp+>r4<$Mc+*;Vrmc)#*6 z)QY_?^a^jG7{F_h=k>9xYuW%9#12`+Ad>9{3ft$$Gp~ar$xoOhxi1BiB<*LN^mdhY zMtR9!b3K;;Q#a{GFm=TG{5Zkhi6L7 z;|BAtc-Sz!odP?1VcKkGsCBs!><_o3hFO~#CLje#4kz)0raNbRM^KIN{O2=|SqnV1 z*IK7h-{N?E9(_V(*rCMr4a{tS$mLfl!%)y2#rMV<{YnePBwnQDX?>SMe~L2U%r+$E zK(0I4K_{*vCH1(sll5If$1ZMp^|SQ&sW?HHRne6%M%2-TUH4auZDdDFS67s0bFbEgz`FT-*j% zHmqKnDl-+rw%puebIE4W3%EAsNmj}*D@I;et>sH(OqUKQ__Jc6NW(K{bZjrnD9k(!sKTB{EW-g{PYFyU{E_s zY?*9ww7e3CA>=J9+aHJFO|O|;K@c&xA|i`K3__AN0sxh94+5wF(8%<=iZj->x{?WG zAsCI+?||aNx|#_hSs7^O!%d&2o@;iOdD7Fn8k@PEB5saaMiex{)5-lv}Kk^Eg` z%-t8quvey8BaR1v1AB!a9567u#-+ObIWHux!R=5>|83EF7+y3T+U3S+*Y1_E*NaH# zoZc9)ocjW&2VrMC-F|JJGTA^Ww|*a7!HjG(u07hLdD{IY2wsJQV{E+hHE2lJqM=WG z7CkN%;Aqo6i{>FbpoL&|UaOyL;?;sDti5Y-`j8{7!a%L4Y+>(iEopA>*0lG7p5^!TN+D9mgqrmbQ#zl^u>$wq=w5=OlDUzg@U?dnyB7m_LX=$&X!5G zw=w0Ra#|ixu0_~A#I{z-r9O(p8`VLJQ#lv*od?NsKA{p!wFT;o?xQztR3k zJ~K8sR+zW{?Vxt6-G2Xnr*sHCrA|s!CGUL6Nu_l^*0M}39zE);wSKT{h(x2&zHb3! zYY?9Xf59mHvsd#@9rpLfV3OVD&~#d^PnJp~>!jy3SH;)R?Z5nJ zIp)x%2i9!}UAG;XcuQvWqHb04A)DkURnQyO<3bV_!~A$plV`a`=G26*y*^=6l@9qN zve!SPbzTl$n6I@s+%Eg`oclrQ#Oa$a4L@Zj+zSU~VU}m;)Fc;Aol|~j zbq(!=Idd9YlA1OAXY#}E)opDSC~CbXjAYhKr1jgp=wZ5s57uAJ)CO(tj23|pY( zCIA7>u7xqbNu%0Y)wJG>x1jc71Ddl@giAx((W_-^oo#|-2t!S8Ut9UsQTWU6=J>5p zqE02iKvE#x<0QH8R07<@GQ}FO*B{ZnW)v#dBpJUG232>LD1lOvAVqO*Es~<3r8XjA z@GCI?uQ_Px#lZO{{C@~x1r;2&M(whKg`)P_2IY&{*7LVZia8SG7gfbGt0Q1Q`Ymi> zNt6k14>+qqnnX)7{URLT|&t)sGxz4C@uJSi4cz z`J5DRolhk|*Ev8G>%a)C4y=iBAKfht0h1P7pg7J#s!zvW>~||eowMuh%PKTARA&q0 z6JWRcpCU1X!^4uGgzxeQz6fKs?L^KsI`th-?CI6>m@>V{dq6vgm>_~H{@xUY7bjMM zaKn%=QVByg5RCqjDVhzN?J`q)`#_R=_e#Wdd_P%v1R%0A@(6BN+7MsL8)lttiuO+* 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 )9$Fjehc8u8ZCYIt0Rr0#*`|j&%f(3V!zFXy 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 XHcW41`2?#W4SbnGMn>CM2lf8|v6U!1 literal 0 HcmV?d00001 diff --git a/figs/convergence.png b/figs/convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..1d16840bf5fa2ba44f84a2254202392c4a56eeea GIT binary patch literal 107524 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

@XX(bpAyR{xS2q1Z?X87wve(GEVXh?dyMh~KVJ z-qzXsTz5Z?^TuF*sLhBKXwy_-Cs5|4?L+Hm-d71zY!#4MeVORVqn}opgxO|Bs5KW) z{fNVRPCY!x*j{2%-x8Z1P;HLHQR*!o@sakCro3yf^{bqa$#0bE=iCx%-iN}L2%w#sV~gad z>C(})8x1u47Cq?J@V*x;fBO=Ub^)x-JpXZ}?Qpdd%Q}GBl7^=)&fUh{XCgbkX>QD3 z>S~}Oip4$YP$mad#z|ZNNPfBb6&n(w{+`p`+e595Rc88LoF9TF`1{%|DB(bx1|!t4 zTZ5!SB)Llr>dl}i+CnG17oAH^kI{g*lpXHzbe6d%z5%9R}S74co+1@}@Q|Dln4g&2)GcF?&gmUs zM&pMB&L+>s92rj4?{kCVzT{+|`&(SIm}rIyJDm!A2UD6aqL%c~cwZ1k{?#NT-;AL(YsLt}rLhPk1FlpW(xnuF`=3a| zadb~~NR3Y#l-rAn3`HgpbjrY?qqJFh?RW%rvt~>s9%fr-+4d|0+niyA4y*en6GFN} zM7}Ljy6^q&lPGkED96uEv*Z}ezC9(0i-5$f8wp_^Mel$Oe~Z*C*Fwq?`d9dVG(i~@ zLjc+4h($V_HE)?}1q@;FTK-@tGOX^Ko&0OH0jtZWlgN+yFuCBb6%B?RNdZdPc;Cv3 z9W+1KFjh9Uub^Dm0&2^Tb#?o-VwdZDxz_w(PLdm%I)kd0mRS=BdqIu1cUw%dva2{*B&e?)yIz?q3$8hYskIsc)9T3O;BDZ{|qn9 zfb>%!e+(6Xn8o1+Z}Cqx%j}ofAcRSsZd{!6uyb&zuBV=yfE)cgQ~YJkPze>A14bRP za&nO4RSqz}Z{L(8cDnhY@;WBH1VH{yb1Q{C1Tj(;y!M> zVz5|cu$yv4>h;HglLYdbwV&}Pm5S>63I|;h5NDE)uKL0$KTveZs~3;OFMd+4q!-Kb z=JAgvQ>-aEuy~gl;dtZYWZu{Vv zvdAQNx0z_pq`AJ1u~(0h5?W%givqx@!qO|^(b?WS!JfCe0wlgv-;FL-H=FF+AecV= zHO)AWGX5lzEKS&hsZDk!xJy)+mNTQeAgjypZ_a$P86RMD5Oc4hLNNHrC>(^BqzO5w zVtkN&%UB5`pI{Q_ews}8wL;B~H+cABSUAr`*>o@pPjj?qoMe*Q9&>T9TbYo+9%d}U zOL|>LhWreF#}AskdluOa7&}e(?FTmf*5}u{o61jv(3@nk{ltSdbWy zw96(EaK_JRb2Vnw{gkbv^*bfw$7-Zwwunt2;RueKqHp%OGI)PIKATsogrZ%-muk9< z?Jv1EnzZwCu0gbM=Tqq#5r~`1K<;dsdYDKU8)l0_A zb{rIS<1PQ@tS%i+VsdNT2Gm@$w;$!IwMNm3|EPAdfZa1TrUR7@ghG7${P{nAUCqK{ z`id>JvxJ-CS4J)OgyLCBw)p$^WpPG|acYWWt(|eTOI#~9(#|YBj&nkDiB4qSmip3f zXxcdnxQN#8=omD{d-bI4Y|A?A)qbB(Y3~#23b;w`;?%2<6%cXP8@Lju$ zs0mnty)#H6-@jp}|Is`LWE4o)5zqDrLJa`AI#a!n*0MfPi+XwFSZ+Hp`WMh!O~GNa zc|TvKh}*8pjhf4R-E%G_j*|9Md*3 z&Jj$dG(GeAg;;G7I7@=Z>helM8TkLyYcYBe;sI<>WX~c&1^WOHn_&71!2VZYhpT11 z#9;CR&`3$+;!d~3oIC!#ih>^I66TpuC)CWZA-M@iT$77qU1*pa4u`}10O3VID@MN2 zc+t>VZ|(k2axebh_5;{U5NZqL0oVHgKsVP2Zoptw_S07YM-n6r)OFzRufTC4Ag2C9 z5&f@R31=v<031>?NYRk34xuMK7HFX{lAAYg&bt(0xcpxYPY?!}+S3{OizWaPP0u_M zRQ!+OqkPUh|5e`48gNRG34UOEl=B4WeHTY7IAFg4um@&+B_Ie{OGgL17AS%QS-jQ` zP5An_FqPcNHQBMq$AW1)K(#QHf7~4N4SNc`o zv4A+4nP5UYD1E|mkWA;E-{}r&zrO4JW zAQ?}7qigJeb+IFTVdg3vGJf6ZHJDjJ-UbR{4R!S=uDW>`SRWKZvEU|!skYtNOch^Z z@lrImJ+@RoAEQNC&IJA-#+ zXE8{z6Jsk&OxUwI1iT#KoorJ`j3*V8IPj?CaBe_TGPtgOw?}$rOSs`0>_TidEZ*yf z<-)N9w+=Xto0dOcq~OFqNDWH*R1*Wx*d>sisaG0y%EvgSM65aQl-YW$mY|*Y>+3YX zk9@{Q#OieDhl2fi?cmY%640qdH^Tc2#taozzSZMf=A%QXuWbCo`=b_BDgZ>@3{9JL zr%Th*(P=-g0;V720}J2keXHgOi%mgru$Gs ztPc2O0SpFskrp8M+yb~Hu#_Rse-8&;)|r=?xzo00i5cqr0AL97+un9mNtdGii>e+d z8Hc_SaJf~BgKLc63%*WU3PxqS6L~Y4_b0tJronht`_D{yFf#F<9W`k6R8QfLpfJf? zS65dG0NWxx)Rl$??KsxeiCU_kKYv1=t+H-30VaL_(YQLE1!(u!mZ>BbJxpqPn6&sX z*x}7*IX}_MEsnOw+Dd3SE zDw3TosqH_{;*VuzcxcJ0`Z7-@>FH-~G6m9VGM5_T+k6AiGzl0(g~lDA@sQZ`^yo3$ zTEbqb6HdU&U>43tEUrHVQ-dJC^VQPG+6IH!kE;QUk3$3D@@1*i_;P8a_@a+jH%A?H z78U%>SL=x5mgB_)iI#e6-Xgk*V7Cr1iUVBzgKPuyR2?w~u$+jah+7;$F4yGzh6vEK z>|;Y)z!9O(7!4QY6Lo6q%9f)N7N}i~k8N}dDiu-qNuVK-S(bT*9u#^B?^-;M{snv`LRvEVe5jwIgaVo^?#RRtK5kYhcVO| z8ku}uQfCS>lxYUSbQE!%qs{_96PrbLVtVPwAVU0k#Mm&c@o^=EW0Nq|NRR`Ld=#I~ zG|;@$s~8i9jS&`jI^GA0=p3MkmbJ|TWac5TR{+8WBn^*OJ2?O{THu@borV9~G*0Na z79blS`m%0+)Ec09zF;^4Qm_G3P-T7Mzh-d=*FYoJ0xE)^H7?eNCnshQVE|@#N-Sxy zu&^Li0JOw#@R18hyxioEiE`gU#wUm#Xgfk(Tv^qh4MrIB5e^W7A#&>weDDDv(~YI}cY=I1999=FE?HOZCQ3F9tmsFEnK0k9)9 zkqc^wyU+XXNPv$!boBJJWhusik*W_BQGj;@x<3ea#sQH*hDb61`clZz(b45dH0U1( zcZ`8+YGgk8OE%)(AH;Dkb)~>c5O5JKbsjrE8oa$E_J_@&0qxOByXXq*A*+(y{AvEQ zP-=fLh5Te=vc3vPcS?a;5F$t+eK<4^F!1(otXhQZQ& z&pjY1HxOi8Hk9D@ja?taEkOe-=TIaW zNGLp)`V7u{*Ypa2!6JcR10qDOUzq6YdxSD2OMyC|AG-Jxpf>>wi@B=J(e~U8zNa`* zw?vW1UaLx=Rs5Sf?N=B2pU-6o+7-YU{?D&v#HFQO4{v?-*tWVAzP_{+3J^CK3~)R% zqdh?2sxf0OxV6A%xOeaqfL#$lY6;P{NZ9p>bSwp^)HNBF#g|P)UX3$Nthqk<1hU+X#h5asxV+D_8}&K@c|JU zeD#7Th~TE9oOjoQD$=g|iRR*hIW2UYS06ubJ53qQ>SjiB^-~5$EB{GZgMe;$_V>2fhe`%NM4;Rfkh%-LzgBXO^P?p_V@~sLmR@W*v1Mze+c5&M`N_JQ`m0x@*d-CV=%{Z@lmU4Kpb;egu8+0rb!D2?^8SZ8jb4ETBC1tiV9~e%LW( zC;`(TNjt#x@{KxindXbR@t(P8o@o_?r%)jKPUQ0~Ejihh-Ha4{KPzJK<|i@_EJp~2 z;xzI9B3{8M|L#=eN8!4y*#`eLs=+4pjDhrihg--TzV-*amLBsDWqr(;u}Yj|%ewEK zqVP=YdP;G4Tdeo`VUB`k0H(m>P37GOpdq3tk~l7Gp=~$pD*MAjHdKm4d!p}CZl&Lc z?hOi4&a>2NSv?*1@-vJ?>*8(QzoKr8lC+T#hRD{C#%+u2#@jb#O9(#3Qgju1ECKeeE z0YTAoCsE)eXz=xg*8r8E>g?>)D}91N$z>1#eLx3{e1btO*XNC3wlELZ{#PfK(cXcE z3!yp4yY8o3?XmCQhXQc!2@pSkZ__ln z$-`;@#sS4uP)~z-8R%}3{yzvl#E-gRP@VlC&vUy8O8k%*PFD8ntJkl$IvAs$fO`QK zxBRkmQVK5Gq0dQ)Zf`dOI|-V+ko4HT0}(%mti?@9|!$#Jd{n+|ts`H*P1V zqX1_^0Sy&|vH@()zp+sojJrV}Ht9|lCJH8^Zv*qNMx$=vP^($$-%$%_XNG-__VmMv zcN=e^g|T%Sdr`@DK}AD@Upo;MA0KZp^ozWD==GD(j^|MB*zbln*Y>>tA|fU+%}fd-tB}k*l*}a9z=0)2s;b!@{6ay03BXRgz9t z7#7zqhyP~{%HRnUPH@GD{f=@!ntc z{NML~UGI6Wr|Y?TIOjNizx#XNpLJu|x*NW}OW7X3kyhhQiKOf>&{H5YqUpn4Vi3*@ z`u;f2l?6FD?PkSObt?d2ftK?A#GaM4HJ7|RyIHMAzMDKq2Z`XLxCzlZe0xKMh9a0( zQS!Ta4wslu-X_v0O`m8`sXH+qDooN>TX_;b9(~`Rzc#gA1hiJ1P_5Nzuu-$s`LU|u zCwu^3=u#h1wku~3avj9AKce!SxW9;RQtC-3Bq_PY^OFNElV&)t;55$e7=|`F42G0X zbA4GM5e|S^g{*7pr9%JRZiXlwXp;Y?q=+DZMG6(;!E4sS(;981}kLTa>{<9mx z5Z*}iaEoXC^-63TRr+Zfk?gfsWPGyx;oZ4?Ms{~}O$2JB&zo#&gsFvx%yV|(^=uw7RK_q|dVk#PnxMQ{K;}Hr!T~qkw0TaUBYZ;ICzs_5 z8}Ex$m)j=Cmi1@ejw~+Y>B5)uX2iDnx*2c@mfOrn39=wXN~j4WLr;AU|MB z<*UI+?nRSA0~6ep=j&3xOrIAIo)l5y7cwYNt);s{*)Mi%>!;wk3^L#B`s=@Flf}nh zzxI)|`4ccu=k0ZW@_Q1WVg$bOSn;T`B0n~B&>V}a*aUy$6)_R znN2emf4v1q9k*OoRu&x>7re4^bKv>*%YrT>Rzp%65UafcJ%;%)5$NOqOecwX8w98G zRR6Hav<>$MU7SRlD>s9$cHV+oc#nevuf664;ePc+jM_SFe)|dfxQgsg33`Ijq&C#r z>4lX~ClA`=3xi9|$SOAd8`VxN*cb4s_L1IAB7G<_kXfO*D!FP?t~bhZL4ey!CaZ>~ zS#kQpxy+DQquSot`tD(Rkn1z9kM~{nZ4;t@n~gOg*ufLwMAzn< zS>_1|gzV&UWa1m2h`_;dH(|rQib4BY7DJ$#JDY$rp)$iTWBU7@WKLywg}sOIrMsV! zc`zTJ=U1{RU9~cjCzINC4^0}AIvi||PfH;R6z}>hro`OfE=V7~o|2%cbZN^`xx;e4 znX1B|h#~JP=4@VQ#i2*mcWxS63Llpq+GSKKdn#_)cZ7##;Q(t{3$P4bW+wk_&aX2w79egp_2d!?NLx+6M*a$29s>|WR|*!%a;K|5 zRL=v@hT`my`iQ1P7w&hi9xKUYJm`v{AwXvZpgD+Jrv?=Zh_4ZS5y8AyGAep!*B_~+ zLG4mH){`RTuAO_Cwf^^P^4y2#%t-0{HT@17LZ1MDL?WKLGqwop8H|I95e5xD^wT$| zn~0F`c@yNu*NodIA+-apyPA%xj|U|Irtv8SdF3?dr`lGg_qI*CPzMe}!VPQngcWFf zqjMKPl7uAIfWm!F-`hC}ac<`a3Joa*42oU>xx6%*bm>_~`n51f5`f|56v&QJhD#Zd8wxcZ|>!F$(3Bv?#*rDyy^%n2ryAN2pY86@9c;|^MpQ? z9Bs4Yl@cW`N=69G1GmpKlK4a4gzN9uMG|q=a~`ic;sjhl(NgDs#9^oy1?ZVgQtD_T zZHxEfKtAnVV$94o0OcH5+307Sz8*Rz4N>CnzniI*F&C>8kaA7&F_ZV^Z#cS@DFK7cH;t<(FQ=pBxugIb_RrNEE1y)$)-ZbEu`@cFZ~i*gxuU!STot|d=Bft| z)iAhJDC%`8tEhYeKT#9>rcZf)GsV!imVnvWvMWi#cA~c8^>NT>WRA8la;v{%2l>KU zCQ~z!#e>}7VLU$@;VV7~56$7dU>1pZp{2_`y4?nx3_LAdi=?l4Ilc7TICg@JN|{I> zc3i<4Xxya{Yvx(%H75~N7o@yv-@IxsolPcvi59Es0n$M7FQj;lb7S*~GrH40)+Dq^ z-0yZSSlk(viofX2QXKM=slZZT<(DB=GQ;uX^C#YS^4e551}usDPm3vin+~FSKfA1! zp&7zdd*X|0{Mlg_&ITPw&g<#mN^!4nRH`Ue zIBPj$7XQ;|*rJw7TCgS3flb3l@N%rjbu}Ns9kxDxM)MV!>DI1rJO( zI`X6@kSzum;5j60G(Hx#6o;l#)v&=~SP)#_(10ev>9QU2t3wl_g1luAVRv8k zKLG;UeM6Zc1X2!Sp-Fp#ydx0Hg;9VS&gQoydMQbq1R5=|TOR0ULJvKJ3h8xLfba|e zLDn??pKm*cVJr_v?g)5#cXf6+1Kc`p<7CMH^R>y)ll3SEo%39{4q08OHT3uA|MsUG z##WD|VQMgMRyFJanKHQ{hm)cH_f0ZsBd^#`)4?|$#6U$s!+ms8QdkH%^Iu9AD*k8S zLlu2|YMQq%U%Ytp!>Ldi(*N~}H*(>2K)G0K{ws?6erKpFq8@YFUuNcw7f~a7@g<>c zNee~BbDHh>Nb7|+3(vO7sjv})kFQ1zrE(^XM5=n8H6i=wM^pvTf ztm;x|g^*l!))jrfj4ON$eLrGrT~9u!J(xs>SJ7?e0PX+vT$=gsHg-xmPll#(RJ60S zbpzVF#W%UV@)WvcW!Gk14WMQCd=z~TF`id~j^~T3nM+%(AU(E5X-PM__uD3cqi?1luGySmL6IcIIzG|B|io&;;Mnx0ha z7zt2XQkC%7nKO%ApLaGjE&brO;-R6OwiGG-?G<=|?xJK-sMDB07y+jNB{3?qCLgWz zT%z1B$Ip*Wr+OUDxYvI|)5uSWxBOxSCg-96otv9hAznP=)`?|veziG1d81$>GmMP{ z{t!mk&OWZ|K7s8*x!mZPVJD33;$=u&I5Kduk0dX~;hO*C9aRk@Z7ic$_ys1vI;z5! z4F(Tw?C+`kU~T`COWGzO%F=i2`Y&dWXfR@RgSGiZ?B&lrnlzuvD}A0iV_OkbWb1il zS@Au^D<4h4LkjUcAJigzChpJ^`D{opQPnU?9_E)2RXY8KuCT`JtKT{yxoA`lU+?S> z(F(QNQnT7p0T_{vePEjaIe{1p0ml{hUECq%=8VID|l|5Arp~;ejZlZ17!g8Y$}^ zN?Mv&pzl|%Ao^b~l^qVl3j*W>O{=LI8yhi!@XeVp$$?)%BW{c)It-vu^k9RN0@V&O z1Oov;#3?9v1VV+7p}IRY#-Nm=!0Zwa?d`qoDfnhq+wp4b{4bauKE6K8t_%bLXrRg2 z{wK#v|8W0{x{A>pjfCC?Kkv2gQ|u^F=;qB+6s+eChPPtZdT|92fNohr-~!64K}jMA zLO|kZh|mfLgzG z5d>i1)LcgI1%2&RkfzFr*i15`$2Ki;c7==Ik?i8OmYhB|tRCFiyVm`KUKa15bi6@~ zzoL^CtIHnge3F%1(Vkb}-7bF3X}M96t8r!S24k1OW!kUPAhmdtZ824+ zK~%Npoo^*!paKYkzTh`})JuXr7PQ}AN@29y?YK2BaxBPD#-V=w!&THl%WZxnY-wqE z3bWzSQ`a#tX%$Q+<}r{^Qnn#70*HWy)0JM!CUArw1L;<&gS5}j8{U*rc`6WK5Y~5| z1GQjWZbD^u(&k z@Rn`8IU0<}zadh;av(|E?jFp@8Sqw6X7i(jlK~zYdeUYut;qlK3emY1)5f2n2*(*p zyFhX$LQgHDWJBPRKPoGpX&D9HEcR#uV=#vY2WN7_M?*M>9W6Q3M!} zcRzqpX|%!#z#90QnemgVU+(Vg?36->IPm=HuMnq>jt)>aetM(x_oIe>wN4*0FF_0& zot72}@p%v>u=UKzNs<{XN5+X=)+ojnIa?t1>j7vEGoZIbKr`ISW+RR88gOyh%|x~8 z;xoUa96jj8>jKzied$1RlDnGD5q+3nMC3tw`jqCFX`L7O%*>246SdB|=a+WstOp9p zH>%C%vRgK|R6xAa(00@hmACCpw4 zr~wQ4Fog@Z$BN$J2O;>Y7vHeoALYaM7dO4ZQ+S4!GT0XdZ^cpxISORg2@eG&deAEJ zMZFJ76g~`U=oIol=CYkFxWf?*!cE=T%SjV|VonEC`}ut&sS#79L3q+ zPcZilox*TrnrQK>zrj|~INUsSb;8KkQkZWLLTp|<2%ga34iZzk#DB%MF4id6iyG|V zr}AkiH{F>cf#UR}#`p_R6 zYt{hUgOF`P6#oMW0lW4 z{-8S;C4n-Cm_J1NKR9_>3iJzmbHY~=7^y=KQLqq;lrX287f+3b5?{1m}FN#tX#xH| ztLbY?(w;#@P!}Ux`mgs;AOVN`P&@&W7WkVIM|rO$BSG`}VPWuuvjMPqTtJ{xSkCgz zk$0)mL&9DQ1AOq80^#~yFwS3jb_pL&4~}6-NRjp$o(klHDys{gfP~T+~%x zHi+Na$B<)AYH^8*Qlo|f2xNhmirRX5K?H<{KEk#A{6o)Y0IdC2eE$BUH}n;$d*J^* zHE-~pn{1E=dLTsm4PvK)=aI>BcpFwP?$HBu{_(D zf)?xB^R6khI(qg;1bkKP>reMg@aFd2v)`m5zhkd?Y)=`)-FdG`bdKp}!fV;wz~PaP zQ?Z90pDs|Tz3uW9`ZB)YuW&ekTHXDw0@r;oYwGQeK|mGgyV|a3$p)ij3y^XhmGeIv z78Z62;-v{y)xO+*2`azL(E`0{mbW}+nI{_D@pBJ}Y}v?K(>O9#1mlk6{JgKM<#V3j zNKMp^MbX!svY{l(<3eKTon)%m*`6cGvv`w_;(lYXM|Xl;FN!YvtK&O$jj#D~FOrJN zmL0|niAMzlN%o)h=y4nD%AU|Dc_RM3iRIS$2)nPe+U|PiBpsVXzdZky7>iA+C#U&& zcBOzR#@xv+BxmHkShH^we}1ZdlECsRO22InMOR$olISFDX! zjKxo?6yw;BsIha{si|?N{?36na(BZ&=hyhj`bujNKAXX>-?+Qdp?&!@g1h}zo6Ws2 z0>*)-_4O>k{psy~-wL<^K*#(noVXYi!{rs#(9nRgnNh&qeiQMKMT!QAkFd9tL;C*1 zNuqOC5}Q^DDP;lys>Z^V2q*nDE18og4+91r(u$oPj8z`QjX1thWe?Z~wJ_S|=8-7P z8IYt?w{D<&1wB0K3f7-XLUl8(G3o}#2>L2?qaar?1~nLQhL@7MtWk4@B*-8-Ipx23 z^WdRFSb)jTdM?l*p_90?<12D2+*}B#JXUtMzc=^vPy)y=jJXbgIqJZmStDoL-#7rJ zaY9n$sQVaMRLywhYys>%fW8e)^l?#|JhTXrhdIGOuF?F~A%5o^=nW}AVM4gK^Htt; zc~qj@Wr_{xlx6?}$K`Hw6+HS2?f%$<5dne6C}Sr{f(&yCB63hHC3GL(Sa_nxCIrv? zE1mW)prhIaesTq@HRJt~NVNs>S~Ky?-~WMIZEgM(;AFN`v*72G~m@51xKx!S<*CFpmlPC&S;jz=NL%Q3Wv5n2Dd}vYhWC z&m84~NMuOWK#CGy-Y+VCeTt#WN<}o%gXfecs$=e_R_dH5532iFK_waCQL3R|M^9Er4`6hyn5zywVyyf^I)SFem1uUGn(0Nj(MGwxFP!V z1A8Pv?+3ir0rG{>2mNJtZ8gg-<%xD#W4`nU$Lr(Na%l3iX^wFptmskWEe#i~ki+R_ z9KFSHakSdrkDAbBcXcP0!$QiL}FabHV$6oG=@*8*|O-6W$)iM+A| ziVATb0()1Dtwe>Ze-b9m0ZNIJ4L06jsC=I5?>Cg% zIe#3T^un|Su~X1@}CO9i1Y1Rq*!y_R!__JD!1N_^f2bSWdKL zPpfKt<>8B}I7ycZVXxhl20fP#w-B~WMm2R)e01K-Y!UX_)bry|Smh5`eBPZK+cs)> z4D&)fN{ev8SmzvBIz2YwX?J9njrDThfp(uFR>A@I7&>HSmU~2vCI4;^J~6r~gh>oO z8Z8YRrt)BSwd?2We**^)c>_VB0$_W>gO)3?OQqX-BHtCep+j!J0z4Ah;aUN6Y&Rd91VUEd%e$Aowx zbOS;#Fn{HVf@3UQe=}w>nLcmP_k7!(rtb*>l`ziK8N7ZJF4BO*p#bg1M*3e5u2$I7 zgOcLjr%zZL@~HMxRWWdR>^}yN0Rs5N4N712^X0>kPkA17?e+-AreD{|K9;nEEf$QKa0RhS(qIiGqH?&83)=H; z-J`0@e&bfLeOTM*#9D^M`V~t>MWyr8HOJL)cIkeWsbeH1mgbN2L)BJwxf*UVHEO%W zSg-TzF^7;btCHevIeC^YyN;?xSXK0nD5g=>J@XMyl*~fZajp)LSLc-`swfUjIND-MsYEs-D$Ap$%Y7g&8 zbY1yH&Ch$+b0ATx^wimTe{R`dJV|Z+EE?N1-L%0?^|7xEhlkTHv>V@<9xf$q)3*4d z?fJmByE8CJw|{=7=%y}j>}9$drAs}bN*%`2ErR;*7sy2U*s~;}zSE5oONHND=ZKqa zJ(5f%KXA+2y6m1^&f-Ze-sDz!2 z4sfIYRT%ew%^t}hyvk(CL31&A#vOB{#e&@w{^?7Qf}#MrC|AgU&)qox#lE}yU(`|N!adkf-{a|{Wg~yz2TRC0cbj&ubRZDYfNDtH+wM!dzaAO9^2lh z1elM&g#xpD7%7n+@8VLr^#6fkdQOQJ@0=tb8udO}Lbss=@U71u0dg(>$vx}a|8e(c$SyQO6 zZ9&6|5_G<$+MyM#oUEw@*~{5R&GB{%Z&+F2Jm6_zBEjFZvt&Ok-N4f_Fr@QvMrt@` z<+0joXoEekp9>+kSM?>pp1;UAXSH-o<`+7Tcf(-K199$_85$0ymS*Mx`j$S1!Cw8N zUl~~zue=*+R$2;VvcIj$=!Iu;!>PhM<(RA4IePD`^<4z8d|Hf zqGW9cSpNK6))3OarPy}aTggsb1wWD`ox(t#wf1d-8O4UcE}tKT*Zz7Jam(k*pC&Ai#spw74NlEU7( zia(GijSUEX)u`YpQzccjzGNBv;QZjH7){oapWPecfkv8wvut>{ymbWAm6Mosv@3IzROoO!yr ztg~xyp)j_rEtoJ{FQ%=nkHxyHJ~!i7QId>Ys}BSj;gEjQubW`tQ_Wg@MFmsA*j5ou_=dV6wy{Y> zi9MD$wK|&dVa--z!WdKJ6$NGCD!>O5e)UzmT7tbN({nLwsuyAu6d{j=g4J!QgN4ic zrYbBWK##tNKcJF_Z9ej_Hwo?Vf?y^KSo1>h{X2M&AVmFcLINWq6OvD)!TokJ2|61cv(<)*Ro{ZW?|Xmb zAzL2{ff~FbA|<|rkb*Bp?UMq=Ta+N70!$hKCPC!d8`S+nv& zD93(hRvd#Gby&`W)T)oUH9WqTK;Sc^XrS$0z~X)m;~Y8*;C{3!DGAAIWJAf0|2;p zAA+GUTMD53{(B+D6dQag_g$6At=M(0Jz9HVdsy02?0B(PrdQwmDpiLqO?{Lcb$d9w&^0qpe@_@y03%SjAN%v+l&Rv!X=vQO#Ad`G9TR~!AH$;_!VVjHW6UT#xgwtyZvKho{6qyE z85OplWs0+<{KA#qvuk*S�% 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 RK~1KFD|UT+RBhxI +#include +#include +#include + +#ifdef SPINER_USE_HDF +#include "hdf5.h" +#include "hdf5_hl.h" +#include +#endif + +#include "ports-of-call/portability.hpp" +#include "ports-of-call/portable_arrays.hpp" +#include "spiner_types.hpp" +#include "sp5.hpp" + +namespace Spiner { + // TODO: be more careful about what this number should be + // sqrt machine epsilon or something + constexpr Real EPS = 10.0*std::numeric_limits::epsilon(); + constexpr Real rNaN = std::numeric_limits::signaling_NaN(); + constexpr int iNaN = std::numeric_limits::signaling_NaN(); + + // a poor-man's std::double + struct weights_t { + Real first, second; + PORTABLE_INLINE_FUNCTION Real& operator[] (const int i) { + assert ( 0 <= i && i <= 1 ); + return i == 0 ? first : second; + } + }; + + class RegularGrid1D { + public: + // Constructors + PORTABLE_INLINE_FUNCTION RegularGrid1D() + : min_(rNaN), max_(rNaN), dx_(rNaN), idx_(rNaN), N_(iNaN) + {} + PORTABLE_INLINE_FUNCTION RegularGrid1D(Real min, Real max, size_t N) + : min_(min) + , max_(max) + , dx_((max - min)/((Real)(N-1))) + , idx_(1/dx_) + , N_(N) + {} + + // Assignment operator + PORTABLE_INLINE_FUNCTION RegularGrid1D& operator= (const RegularGrid1D &src) { + if (this != &src) { + min_ = src.min_; + max_ = src.max_; + dx_ = src.dx_; + idx_ = src.idx_; + N_ = src.N_; + } + return *this; + } + + // Forces x in the interval + PORTABLE_INLINE_FUNCTION int bound(int ix) const { + #ifndef SPINER_DISABLE_BOUNDS_CHECKS + if (ix < 0) ix = 0; + if (ix >= (int)N_-1) ix = (int)N_ - 2; // Ensures ix+1 exists + #endif + return ix; + } + + // Gets real value at index + PORTABLE_INLINE_FUNCTION Real x(const int i) const { return i*dx_ + min_; } + PORTABLE_INLINE_FUNCTION int index(const Real x) const { + return bound(idx_*(x - min_)); + } + + // Returns closest index and weights for interpolation + PORTABLE_INLINE_FUNCTION void weights(Real x, int& ix, weights_t& w) const { + ix = index(x); + const Real floor = ix*dx_ + min_; + w[1] = idx_*(x - floor); + w[0] = (1. - w[1]); + } + + // 1D interpolation + PORTABLE_INLINE_FUNCTION Real operator() (const Real x, + const PortableMDArray& A) const { + int ix; + weights_t w; + weights(x,ix,w); + return w[0]*A(ix) + w[1]*A(ix+1); + } + + // utitilies + PORTABLE_INLINE_FUNCTION bool operator== (const RegularGrid1D& other) const { + return (min_ == other.min_ + && max_ == other.max_ + && dx_ == other.dx_ + && idx_ == other.idx_ + && N_ == other.N_); + } + PORTABLE_INLINE_FUNCTION bool operator!= (const RegularGrid1D& other) const { + return !(*this == other); + } + PORTABLE_INLINE_FUNCTION Real min() const { return min_; } + PORTABLE_INLINE_FUNCTION Real max() const { return max_; } + PORTABLE_INLINE_FUNCTION Real dx() const { return dx_; } + PORTABLE_INLINE_FUNCTION Real nPoints() const { return N_; } + PORTABLE_INLINE_FUNCTION bool isnan() const { + return (std::isnan(min_) + || std::isnan(max_) + || std::isnan(dx_) + || std::isnan(idx_) + || std::isnan((Real)N_)); + } + PORTABLE_INLINE_FUNCTION bool isWellFormed() const { return !isnan(); } + +#ifdef SPINER_USE_HDF + inline herr_t saveHDF(hid_t loc, const std::string& name) const { + herr_t status; + Real range[] = {min_,max_,dx_}; + hsize_t range_dims[] = {3}; + int n = static_cast(N_); + status = H5LTmake_dataset(loc, name.c_str(), + SP5::RG1D::RANGE_RANK, + range_dims, + H5T_REAL, range); + status += H5LTset_attribute_int(loc, name.c_str(), + SP5::RG1D::N, + &n, 1); + status += H5LTset_attribute_string(loc, name.c_str(), + SP5::RG1D::RANGE_INFONAME, + SP5::RG1D::RANGE_INFO); + return status; + } + + inline herr_t loadHDF(hid_t loc, const std::string& name) { + herr_t status; + Real range[3]; + int n; + status = H5LTread_dataset(loc, name.c_str(), H5T_REAL, range); + min_ = range[0]; + max_ = range[1]; + dx_ = range[2]; + idx_ = 1./dx_; + status += H5LTget_attribute_int(loc, name.c_str(), + SP5::RG1D::N, + &n); + N_ = n; + return status; + } +#endif + + private: + Real min_, max_; + Real dx_, idx_; + size_t N_; + }; + +} +#endif // _SPINER_INTERP_ diff --git a/plot_convergence.py b/plot_convergence.py new file mode 100755 index 000000000..25f394aaa --- /dev/null +++ b/plot_convergence.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python + +# Generates a convergence plot for Spiner. +# Requires scientific python stack + +import numpy as np +import matplotlib as mpl +from matplotlib import pyplot as plt +from matplotlib import rc +import os +rc('font',size=14) +# mpl.rcParams['xtick.minor.size'] = 0 +# mpl.rcParams['xtick.minor.width'] = 0 + +DFILE = "convergence.dat" +PLOTPATH = os.path.join("figs","convergence") + +KX,KY,KZ = 2,3,4 +xmin,xmax = 0,1 +def test_function(y,x): + return np.sin(2*np.pi*KX*x)*np.sin(2*np.pi*KY*y) + +x = np.linspace(0,1,100) +X,Y = np.meshgrid(x,x) + +data = np.loadtxt(DFILE) + +fig,axarr = plt.subplots(1,2,figsize=(17,8)) + +axarr[0].plot(np.log2(data[:,0]),data[:,1],'ko-',lw=2) +axarr[0].set_yscale('log') +axarr[0].set_xticks(np.log2(data[:,0])) +axarr[0].set_xticklabels([str(d) for d in data[:,0]]) +axarr[0].set_xlabel('Points per axis') +axarr[0].set_ylabel('Error') +axarr[0].grid(True) + +mesh = axarr[1].pcolormesh(X,Y,test_function(Y,X)) +mesh.set_edgecolor('face') +cbar = plt.colorbar(mesh) +cbar.set_label(r'$\sin(2\pi k_x x)\sin(2\pi k_y y)$') +axarr[1].set_xlabel(r'$x$') +axarr[1].set_ylabel(r'$y$') + +for postfix in ['.pdf','.png']: + plt.savefig(PLOTPATH+postfix, + bbox_inches='tight') + diff --git a/ports-of-call/portable_arrays.hpp b/ports-of-call/portable_arrays.hpp index 31aff6e39..a548885b2 100644 --- a/ports-of-call/portable_arrays.hpp +++ b/ports-of-call/portable_arrays.hpp @@ -5,7 +5,7 @@ // Copyright(C) 2014 James M. Stone and other code contributors // Licensed under the 3-clause BSD License, see LICENSE file for details // -// © (or copyright) 2020. Triad National Security, LLC. All rights +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights // reserved. This program was produced under U.S. Government contract // 89233218CNA000001 for Los Alamos National Laboratory (LANL), which // is operated by Triad National Security, LLC for the U.S. diff --git a/sp5.hpp b/sp5.hpp new file mode 100644 index 000000000..b58ae7eda --- /dev/null +++ b/sp5.hpp @@ -0,0 +1,46 @@ +#ifndef _SPINER_SP5_HPP_ +#define _SPINER_SP5_HPP_ +//====================================================================== +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights +// reserved. This program was produced under U.S. Government contract +// 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +// operated by Triad National Security, LLC for the U.S. Department of +// Energy/National Nuclear Security Administration. All rights in the +// program are reserved by Triad National Security, LLC, and the +// U.S. Department of Energy/National Nuclear Security +// Administration. The Government is granted for itself and others acting +// on its behalf a nonexclusive, paid-up, irrevocable worldwide license +// in this material to reproduce, prepare derivative works, distribute +// copies to the public, perform publicly and display publicly, and to +// permit others to do so. +//====================================================================== + +// This file contains strings defined for use accross the SP5 data +// format + +namespace SP5 { + + namespace DB { + constexpr char FILENAME[] = "databox.sp5"; + constexpr char GRPNAME[] = "databox"; + constexpr char DSETNAME[] = "data"; + constexpr char RANKNAME[] = "rank"; + constexpr char DIMSNAME[] = "dims"; + constexpr char IDXSNAME[] = "index_types"; + constexpr char IDXINFONAME[] = "index_types_info"; + constexpr char IDXINFO[] = "Interpolated:0\nNamed:1\nIndexed:2"; + constexpr char GRIDNAME[] = "grids"; + const std::string GRID_FORMAT[] = {"grid_[","]"}; + } + + namespace RG1D { + constexpr char RANGE_NAME[] = "range"; + constexpr char N[] = "npoints"; + constexpr char RANGE_INFONAME[] = "range columns"; + constexpr char RANGE_INFO[] = "[0]:min [1]:max [2]:dx"; + constexpr int RANGE_RANK = 1; + } + +} + +#endif // _SPINER_SP5_HPP_ diff --git a/spiner.py b/spiner.py new file mode 100644 index 000000000..35c18c33a --- /dev/null +++ b/spiner.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python + +#====================================================================== +# © (or copyright) 2019-2021. Triad National Security, LLC. All rights +# reserved. This program was produced under U.S. Government contract +# 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +# operated by Triad National Security, LLC for the U.S. Department of +# Energy/National Nuclear Security Administration. All rights in the +# program are reserved by Triad National Security, LLC, and the +# U.S. Department of Energy/National Nuclear Security +# Administration. The Government is granted for itself and others acting +# on its behalf a nonexclusive, paid-up, irrevocable worldwide license +# in this material to reproduce, prepare derivative works, distribute +# copies to the public, perform publicly and display publicly, and to +# permit others to do so. +#====================================================================== + +from enum import IntEnum + +class IndexType(IntEnum): + Interpolated = 0 + Named = 1 + Indexed = 2 + +class DataBox: + def __init__(self, + indices=[], + grids={}, + data=None): + self._indices=indices + self._grids=grids + self._data=data + + def __getitem__(self,key): + return self._data[key] + + def shape(self): + return self._data.shape + + def grids(self,i): + return self._grids[i] + + def indices(self,i): + return self._indices + + def data(self): + return self._data + + @classmethod + def fromHDF(cls,loc): + import h5py + import numpy as np + indices = loc.attrs['index_types'] + grids = {} + for i in range(indices.shape[0]): + if indices[i] == IndexType.Interpolated: + gridname = 'grids/grid_[{}]'.format(i+1) + xmin,xmax,dx = loc[gridname][()] + nx = loc[gridname].attrs['npoints'][0] + grids[i] = np.linspace(xmin,xmax,nx) + data = loc['data'][()] + return cls(indices,grids,data) diff --git a/spiner_types.hpp b/spiner_types.hpp new file mode 100644 index 000000000..43690e582 --- /dev/null +++ b/spiner_types.hpp @@ -0,0 +1,22 @@ +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights +// reserved. This program was produced under U.S. Government contract +// 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +// operated by Triad National Security, LLC for the U.S. Department of +// Energy/National Nuclear Security Administration. All rights in the +// program are reserved by Triad National Security, LLC, and the +// U.S. Department of Energy/National Nuclear Security +// Administration. The Government is granted for itself and others acting +// on its behalf a nonexclusive, paid-up, irrevocable worldwide license +// in this material to reproduce, prepare derivative works, distribute +// copies to the public, perform publicly and display publicly, and to +// permit others to do so. + +#ifndef _SPINER_TYPES_HPP_ +#define _SPINER_TYPES_HPP_ + +#ifdef SPINER_USE_HDF +#define H5T_REAL H5T_NATIVE_DOUBLE +#define H5_SUCCESS 0 +#endif + +#endif // _SPINER_TYPES_HPP_ diff --git a/test.cpp b/test.cpp new file mode 100644 index 000000000..2ff1b04c4 --- /dev/null +++ b/test.cpp @@ -0,0 +1,435 @@ +// © (or copyright) 2019-2021. Triad National Security, LLC. All rights +// reserved. This program was produced under U.S. Government contract +// 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is +// operated by Triad National Security, LLC for the U.S. Department of +// Energy/National Nuclear Security Administration. All rights in the +// program are reserved by Triad National Security, LLC, and the +// U.S. Department of Energy/National Nuclear Security +// Administration. The Government is granted for itself and others acting +// on its behalf a nonexclusive, paid-up, irrevocable worldwide license +// in this material to reproduce, prepare derivative works, distribute +// copies to the public, perform publicly and display publicly, and to +// permit others to do so. + +#include +#include +#include // std::min, std::max +#include // sqrt + +#include "ports-of-call/portability.hpp" +#include "ports-of-call/portable_arrays.hpp" +#include "spiner_types.hpp" +#include "databox.hpp" +#include "interpolation.hpp" + +#define CATCH_CONFIG_RUNNER +#include "catch.hpp" + +using Spiner::DataBox; +using Spiner::RegularGrid1D; +using Spiner::IndexType; +const Real EPSTEST = std::sqrt(Spiner::EPS); + +PORTABLE_INLINE_FUNCTION Real linearFunction(Real z, Real y, Real x) { + return x + y + z; +} + +TEST_CASE( "PortableMDArrays can be allocated from a pointer", + "[PortableMDArray]" ) { + constexpr int N = 2; + constexpr int M = 3; + std::vector data(N*M); + PortableMDArray a; + int tot = 0; + for (int i = 0; i < N*M; i++) { + data[i] = tot; + tot++; + } + a.NewPortableMDArray(data.data(),M,N); + + SECTION( "Shape should be NxM" ) { + REQUIRE( a.GetDim1() == N ); + REQUIRE( a.GetDim2() == M ); + } + + SECTION( "Stride is as set by initialized pointer" ) { + int tot = 0; + for (int j = 0; j < M; j++) { + for (int i = 0; i < N; i++) { + REQUIRE( a(j,i) == tot ); + tot++; + } + } + } + + SECTION( "Identical slices of the same data should compare equal" ) { + PortableMDArray aslc1, aslc2; + aslc1.InitWithShallowSlice(a,1,0,2); + aslc2.InitWithShallowSlice(a,1,0,2); + REQUIRE( aslc1 == aslc2 ); + } +} + +TEST_CASE( "DataBox Basics", "[DataBox]" ) { + + SECTION( "DataBoxes are initialized with correct rank" ) { + DataBox db(2); + DataBox db4(5,4,2,2); + REQUIRE( db.rank() == 1 ); + REQUIRE( db4.rank() == 4 ); + } + + SECTION( "A DataBox can be written to and read from" ) { + + constexpr int M = 3; + constexpr int N = 2; + + DataBox db(M,N); + int tot = 0; + for (int j = 0; j < M; j++) { + for (int i = 0; i < N; i++) { + db(j,i) = tot; + tot++; + } + } + tot = 0; + for (int j = 0; j < M; j++) { + for (int i = 0; i < N; i++) { + REQUIRE( db(j,i) == tot ); + tot++; + } + } + + SECTION( "DataBox min and max can be correctly computed" ) { + REQUIRE( db.max() == tot - 1 ); + REQUIRE( db.min() == 0 ); + } + + SECTION( "DataBox metadata can be copied" ) { + DataBox dbCopy; dbCopy.copyMetadata(db); + REQUIRE( dbCopy.rank() == db.rank() ); + for (int i = 0; i < db.rank(); i++ ) { + REQUIRE( dbCopy.dim(i+1) == db.dim(i+1) ); + REQUIRE( dbCopy.indexType(i) == db.indexType(i) ); + } + REQUIRE( dbCopy != db ); + + SECTION( "DataBoxes can be resized" ) { + dbCopy.resize(5,4,3); + REQUIRE( dbCopy.rank() == 3 ); + REQUIRE( dbCopy.dim(1) == 3 ); + REQUIRE( dbCopy.dim(2) == 4 ); + REQUIRE( dbCopy.dim(3) == 5 ); + } + } + + SECTION("DataBoxes can be shallow copied") { + DataBox db2(db); + REQUIRE( &(db2(0)) == &(db(0)) ); + db2 = db; + REQUIRE( &(db2(0)) == &(db(0)) ); + } + + SECTION("DataBoxes can be deep copied") { + DataBox db2; + db2.copy(db); + REQUIRE( &(db2(0)) != &(db(0)) ); + } + + SECTION( "DataBoxes can be sliced in 2D" ) { + DataBox dbslc = db.slice(0); + DataBox dbslc2(db,1,0,2); + + REQUIRE( dbslc2.rank() == 1 ); + REQUIRE( dbslc2.dim(dbslc2.rank()) == 2 ); + + SECTION( "DataBox slices are correctly indexed" ) { + int tot = 0; + for (int i = 0; i < dbslc.dim(dbslc.rank()); i++) { + REQUIRE( dbslc(i) == tot ); + tot++; + } + } + + SECTION( "DataBox slices are shallow" ) { + REQUIRE( dbslc == dbslc2 ); + REQUIRE( &(dbslc(0)) == &(db(0)) ); + } + } + } +} + +TEST_CASE( "DataBox interpolation", "[DataBox]" ) { + constexpr int NFINE = 100; + constexpr int RANK = 3; + constexpr int NZ = 8; + constexpr int NY = 10; + constexpr int NX = 12; + DataBox db(NZ,NY,NX); + + constexpr Real xmin = 0; + constexpr Real xmax = 1; + constexpr Real ymin = -0.5; + constexpr Real ymax = 0.5; + constexpr Real zmin = -1; + constexpr Real zmax = 0; + + std::array grids = {RegularGrid1D(xmin,xmax,NX), + RegularGrid1D(ymin,ymax,NY), + RegularGrid1D(zmin,zmax,NZ)}; + std::array fine_grids = {RegularGrid1D(xmin,xmax,NFINE), + RegularGrid1D(ymin,ymax,NFINE), + RegularGrid1D(zmin,zmax,NFINE)}; + + for (int i = 0; i < RANK; i++) db.setRange(i, grids[i]); + + for (int iz = 0; iz < NZ; iz++) { + Real z = grids[2].x(iz); + for (int iy = 0; iy < NY; iy++) { + Real y = grids[1].x(iy); + for (int ix = 0; ix < NX; ix++) { + Real x = grids[0].x(ix); + db(iz,iy,ix) = linearFunction(z,y,x); + } + } + } + + SECTION( "interpToReal in 3D is exact for linear functions" ) { + Real error = 0; + for (int iz = 0; iz < NFINE; iz++) { + Real z = fine_grids[2].x(iz); + for (int iy = 0; iy < NFINE; iy++) { + Real y = fine_grids[1].x(iy); + for (int ix = 0; ix < NFINE; ix++) { + Real x = fine_grids[0].x(ix); + Real f_true = linearFunction(z,y,x); + Real difference = db.interpToReal(z,y,x) - f_true; + error += (difference*difference); + } + } + } + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + } + + SECTION( "interpFromDB 3D->2D" ) { + constexpr Real z = (zmax + zmin) / 2.; + + SECTION( "Slicing relevant for interpToDB in slowest index works" ) { + int iz = grids[RANK-1].index(z); + DataBox lower = db.slice(iz); + DataBox upper = db.slice(iz+1); + + Real error = 0; + for (int iy = 0; iy < NY; iy++) { + for (int ix = 0; ix < NX; ix++) { + Real difference = lower(iy, ix) - db(iz, iy, ix); + error += difference*difference; + difference = upper(iy, ix) - db(iz+1, iy, ix); + error += difference*difference; + } + } + error = sqrt(0.5*error); + REQUIRE( error <= EPSTEST ); + } + + DataBox db2d; + db2d.resize(db.size()/db.dim(db.rank())); + db2d.interpFromDB(db,z); + + Real error = 0; + for (int iy = 0; iy < NY; iy++) { + Real y = grids[1].x(iy); + for (int ix = 0; ix < NX; ix++) { + Real x = grids[0].x(ix); + Real f_true = linearFunction(z,y,x); + Real difference = db2d(iy,ix) - f_true; + error += (difference*difference); + } + } + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + + SECTION( "interpToReal 2D" ) { + Real error = 0; + for (int iy = 0; iy < NFINE; iy++) { + Real y = fine_grids[1].x(iy); + for (int ix = 0; ix < NFINE; ix++) { + Real x = fine_grids[0].x(ix); + Real f_true = linearFunction(z,y,x); + Real difference = db2d.interpToReal(y,x) - f_true; + error += (difference*difference); + } + } + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + } + } + + SECTION( "interpFromDB 3D->1D" ) { + constexpr Real z = (zmax + zmin) / 2.; + constexpr Real y = (ymax + ymin) / 2.; + + SECTION( "Slicing in 2D works" ) { + int iz = grids[RANK-1].index(z); + int iy = grids[RANK-2].index(y); + DataBox corner = db.slice(iz,iy); + Real error = 0; + for(int ix = 0; ix < NX; ix++) { + error += (corner(ix) - db(iz,iy,ix))*(corner(ix) - db(iz,iy,ix)); + } + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + } + + DataBox db1d; + db1d.resize(db.size() / (db.dim(db.rank())*db.dim(db.rank()-1))); + db1d.interpFromDB(db,z,y); + REQUIRE( db1d.rank() == 1 ); + REQUIRE( db1d.dim(1) == NX ); + + Real error = 0; + for (int ix = 0; ix < NX; ix++) { + Real x = grids[0].x(ix); + Real f_true = linearFunction(z,y,x); + Real difference = db1d(ix) - f_true; + error += difference*difference; + } + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + } +} + +#if SPINER_USE_HDF +SCENARIO( "DataBox HDF5", "[DataBox],[HDF5]" ) { + constexpr int N = 2; + herr_t status; + + DataBox db(N,N,N); + int tot = 0; + for (int k = 0; k < N; k++) { + for (int j = 0; j < N; j++) { + for (int i = 0; i < N; i++) { + db(k,j,i) = tot++; + } + } + } + db.setRange(0,0,1,10); + + GIVEN( "DataBox can be saved to HDF5" ) { + status = db.saveHDF(); + REQUIRE( status == H5_SUCCESS ); + + WHEN( "DataBox can be loaded from HDF5" ) { + DataBox db2; + status = db2.loadHDF(); + REQUIRE( status == H5_SUCCESS ); + + THEN( "Metadata read in is consistent" ) { + REQUIRE( db2.rank() == db.rank() ); + for (int i = 0; i < db.rank(); i++) { + REQUIRE( db.indexType(i) == db2.indexType(i) ); + REQUIRE( db.dim(i+1) == db2.dim(i+1) ); + if ( db.indexType(i) == IndexType::Interpolated ) { + REQUIRE( db.range(i) == db2.range(i) ); + } + } + AND_THEN( "Data itself is consistent" ) { + for (int k = 0; k < N; k++) { + for (int j = 0; j < N; j++) { + for (int i = 0; i < N; i++) { + REQUIRE( db(k,j,i) == db2(k,j,i) ); + } + } + } + } + } + } + } +} +#endif + + +#ifdef PORTABILITY_STRATEGY_KOKKOS +SCENARIO( "Kokkos functionality: interpolation", + "[DataBox],[Kokkos]" ) { + constexpr int NFINE = 100; + constexpr int RANK = 3; + constexpr int NZ = 8; + constexpr int NY = 10; + constexpr int NX = 12; + DataBox db(NZ,NY,NX); + + constexpr Real xmin = 0; + constexpr Real xmax = 1; + constexpr Real ymin = -0.5; + constexpr Real ymax = 0.5; + constexpr Real zmin = -1; + constexpr Real zmax = 0; + + using Policy3D = Kokkos::MDRangePolicy>; + using DeviceView_t = Kokkos::View; + using HostView_t = Kokkos::View; + + std::array grids = {RegularGrid1D(xmin,xmax,NX), + RegularGrid1D(ymin,ymax,NY), + RegularGrid1D(zmin,zmax,NZ)}; + std::arrayfine_grids = {RegularGrid1D(xmin,xmax,NFINE), + RegularGrid1D(ymin,ymax,NFINE), + RegularGrid1D(zmin,zmax,NFINE)}; + + for (int i = 0; i < RANK; i++) db.setRange(i, grids[i]); + + for (int iz = 0; iz < NZ; iz++) { + Real z = grids[2].x(iz); + for (int iy = 0; iy < NY; iy++) { + Real y = grids[1].x(iy); + for (int ix = 0; ix < NX; ix++) { + Real x = grids[0].x(ix); + db(iz,iy,ix) = linearFunction(z,y,x); + } + } + } + + Real* device_data = (Real*)PORTABLE_MALLOC(db.sizeBytes()); + DeviceView_t deviceView(device_data,db.size()); + HostView_t hostView(db.data(),db.size()); + Kokkos::deep_copy(deviceView, hostView); + DataBox db_dev(device_data,NZ,NY,NX); + db_dev.copyShape(db); + + Real error = 0; + Kokkos::parallel_reduce(Policy3D({0,0,0},{NFINE,NFINE,NFINE}), + PORTABLE_LAMBDA(const int iz, const int iy, const int ix, Real& update) + { + const Real z = fine_grids[2].x(iz); + const Real y = fine_grids[1].x(iy); + const Real x = fine_grids[0].x(ix); + const Real f_true = linearFunction(z,y,x); + const Real difference = db_dev.interpToReal(z,y,x) - f_true; + update += difference*difference; + }, error ); + error = sqrt(error); + REQUIRE( error <= EPSTEST ); + + PORTABLE_FREE(device_data); +} +#endif + +int main(int argc, char* argv[]) { + +#ifdef PORTABILITY_STRATEGY_KOKKOS + Kokkos::initialize(); +#endif + int result; + { + result = Catch::Session().run( argc, argv ); + } +#ifdef PORTABILITY_STRATEGY_KOKKOS + Kokkos::finalize(); +#endif + return result; + +}