diff --git a/include/pressiodemoapps/gradient.hpp b/include/pressiodemoapps/gradient.hpp new file mode 100644 index 00000000..b7173019 --- /dev/null +++ b/include/pressiodemoapps/gradient.hpp @@ -0,0 +1,123 @@ +/* +//@HEADER +// ************************************************************************ +// +// mesh.hpp +// Pressio +// Copyright 2019 +// National Technology & Engineering Solutions of Sandia, LLC (NTESS) +// +// Under the terms of Contract DE-NA0003525 with NTESS, the +// U.S. Government retains certain rights in this software. +// +// Pressio is licensed under BSD-3-Clause terms of use: +// +// 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. +// +// Questions? Contact Francesco Rizzi (fnrizzi@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef PRESSIODEMOAPPS_GRADIENT_PUBLIC_HPP_ +#define PRESSIODEMOAPPS_GRADIENT_PUBLIC_HPP_ + +#include "mesh.hpp" +#include "schemes_info.hpp" +#include "impl/gradient_2d.hpp" + +namespace pressiodemoapps{ + +constexpr BoundaryFacesNormalGradientScheme defaultGradSchemeForBoundaryFaces = + BoundaryFacesNormalGradientScheme::OneSidedFdAutoStencil; + +template +class GradientEvaluator +{ +public: + explicit GradientEvaluator(const MeshType & mesh) + : m_impl(mesh, defaultGradSchemeForBoundaryFaces) + { + if (mesh.dimensionality() != 2){ + throw std::runtime_error("gradients currently only supported for 2D"); + } + } + + // this overload is for when the field has one dof/value per cell + template + void operator()(const FieldType & field){ + constexpr int numDofPerCell = 1; + m_impl.compute(field, numDofPerCell); + } + + // this overload is for when the field has more than one dof/value per cell + template + void operator()(const FieldType & field, int numDofPerCell){ + if (numDofPerCell > (int) MaxNumDofPerCell){ + const std::string msg = "GradientEvaluator: cannot call operator() with numDofPerCell > MaxNumDofPerCell: " + + std::to_string(numDofPerCell) + " > " + std::to_string(MaxNumDofPerCell); + throw std::runtime_error(msg); + } + m_impl.compute(field, numDofPerCell); + } + + /* return a reference to a struct that meets the following API. + + - if MaxNumDofPerCell == 1 + + struct FaceApiExpositionOnly{ + std::array centerCoordinates; + scalar_type normalGradient; + int normalDirection; // == 1 for normal along x, == 2 for normal along y + }; + + - if MaxNumDofPerCell >= 2 + + struct FaceApiExpositionOnly{ + std::array centerCoordinates; + std::array normalGradient; + int normalDirection; // == 1 for normal along x, == 2 for normal along y + }; + + NOTE: this is just for exposition-only to show what it offers, + it is not the actual name of the class. + You do not need to know the actual type, just use auto. + */ + const auto & queryFace(int cellGID, FacePosition fp) const{ + return m_impl.queryFace(cellGID, fp); + } + +private: + using face_t = impl::Face; + impl::GradientEvaluatorInternal m_impl; +}; + +}//end namespace pressiodemoapps +#endif diff --git a/include/pressiodemoapps/impl/gradient_2d.hpp b/include/pressiodemoapps/impl/gradient_2d.hpp new file mode 100644 index 00000000..f89ff8af --- /dev/null +++ b/include/pressiodemoapps/impl/gradient_2d.hpp @@ -0,0 +1,289 @@ +/* +//@HEADER +// ************************************************************************ +// +// functor_fill_stencil.hpp +// Pressio +// Copyright 2019 +// National Technology & Engineering Solutions of Sandia, LLC (NTESS) +// +// Under the terms of Contract DE-NA0003525 with NTESS, the +// U.S. Government retains certain rights in this software. +// +// Pressio is licensed under BSD-3-Clause terms of use: +// +// 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. +// +// Questions? Contact Francesco Rizzi (fnrizzi@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef PRESSIODEMOAPPS_IMPL_GRADIENTS_2D_HPP_ +#define PRESSIODEMOAPPS_IMPL_GRADIENTS_2D_HPP_ + +namespace pressiodemoapps{ namespace impl{ + +/* + FRIZZI: Sept 15, 2023 + the code below has been done fairly quickly so not much thought has gone + into how to best do things, but this is a starting point and note that all + this is intentionally just impl details, the actual public API is kept separate +*/ + +template +ScalarType face_normal_gradient_for_cell_centered_function_2d(const FType & f, + const CellConnectivity & cc, + char axis, + GradFdMode mode, + const ScalarType & h, + int numDofPerCell, + int dofShift) +{ + + assert(axis == 'x' || axis == 'y'); + const int graphNumCols = cc.size(); + assert(graphNumCols ==5 || graphNumCols==9 || graphNumCols==13); + + // fd rules taken from https://web.media.mit.edu/~crtaylor/calculator.html + // manually verified only the 2pt one + + const int i_05 = cc[0]; // this always exists + const int i_p15 = (axis=='x') ? cc[3] : (axis=='y') ? cc[2] : -1; + const int i_m15 = (axis=='x') ? cc[1] : (axis=='y') ? cc[4] : -1; + const int i_p30 = (graphNumCols>=9) ? ((axis=='x') ? cc[7] : ((axis=='y') ? cc[6] : -1)) : -1; + const int i_m30 = (graphNumCols>=9) ? ((axis=='x') ? cc[5] : ((axis=='y') ? cc[8] : -1)) : -1; + + const auto f_05 = f(i_05*numDofPerCell + dofShift); + const auto f_p15 = (i_p15 != -1) ? f(i_p15*numDofPerCell + dofShift) : 0; + const auto f_m15 = (i_m15 != -1) ? f(i_m15*numDofPerCell + dofShift) : 0; + const auto f_p30 = (i_p30 != -1) ? f(i_p30*numDofPerCell + dofShift) : 0; + const auto f_m30 = (i_m30 != -1) ? f(i_m30*numDofPerCell + dofShift) : 0; + + switch(mode){ + case GradFdMode::ForwardTwoPt: return (-f_05 + f_p15)/h; + case GradFdMode::BackwardTwoPt: return ( f_05 - f_m15)/h; + case GradFdMode::CenterThreePt: return (-f_m15 + f_p15)/(2*h); + + case GradFdMode::ForwardThreePt: return (-2*f_05 + 3*f_p15 - 1*f_p30)/h; + case GradFdMode::BackwardThreePt: return ( 2*f_05 - 3*f_m15 + 1*f_m30)/h; + case GradFdMode::CenterFivePt: return (-f_m30 - 8*f_m15 + 8*f_p15 - f_p30)/(12*h); + + default: return 0; + } +} + +constexpr int _faceNormalX = 1; +constexpr int _faceNormalY = 2; + +template +struct Face{ + std::array centerCoordinates = {}; + std::array normalGradient = {}; + int parentCellGraphRow = {}; + int normalDirection = {}; //1 for x, 2 for y + + static constexpr std::size_t N_ = N; +}; + +template +struct Face{ + std::array centerCoordinates = {}; + ScT normalGradient = {}; + int parentCellGraphRow = {}; + int normalDirection = {}; //1 for x, 2 for y + + static constexpr std::size_t N_ = 1; +}; + +struct MyKey{ + int parentCellGID; + FacePosition pos; + + bool operator==(const MyKey & p) const { + return parentCellGID == p.parentCellGID && pos == p.pos; + } +}; + +struct HashFnc{ + std::size_t operator() (const MyKey & k) const{ + const std::size_t h1 = std::hash()(k.parentCellGID); + const std::size_t h2 = std::hash()(static_cast(k.pos)); + return h1 ^ h2; + } +}; + + +template +class GradientEvaluatorInternal +{ + using sc_t = typename MeshType::scalar_type; + +public: + // constructor for when we only want the normal grad at domain boundaries' faces + GradientEvaluatorInternal(const MeshType & mesh, + BoundaryFacesNormalGradientScheme schemeAtBoundaryFaces) + : m_schemeAtBoundaryFaces(schemeAtBoundaryFaces), + m_meshObj(mesh) + { + initializeForStoringNormalGradsAtBoundaryFaces(mesh); + } + + const auto & queryFace(int cellGID, FacePosition fp) const{ + const MyKey key{cellGID, fp}; + assert(m_data.count(key) == 1); + auto it = m_data.find(key); + return it->second; + } + + template + void compute(const FieldType & field, int numDofPerCell) + { + if (m_schemeAtBoundaryFaces == BoundaryFacesNormalGradientScheme::OneSidedFdAutoStencil){ + this->normalGradBoundaryFacesOneSidedFdAutoStencil(field, numDofPerCell); + } + else{ + throw std::runtime_error("invalid choice for BoundaryFacesNormalGradientScheme"); + } + } + +private: + template + void normalGradBoundaryFacesOneSidedFdAutoStencil(const FieldType & field, + int numDofPerCell) + { + /* + compute normal gradients using ond-sided FD where the width of + stencil used is determined based on stencil in the mesh object + if the mesh stencil size == 3, we use a two point one-sided FD + if the mesh stencil size == 5, we use a three point one-sided FD + if the mesh stencil size == 7, we use a three point one-sided FD + - we could make this bigger later + */ + + // determine the FD stencil using mesh stencil size + const int ss = m_meshObj.get().stencilSize(); + const auto RightSided = (ss == 3) ? GradFdMode::ForwardTwoPt + : GradFdMode::ForwardThreePt; + const auto LeftSided = (ss == 3) ? GradFdMode::BackwardTwoPt + : GradFdMode::BackwardThreePt; + + const auto dx = m_meshObj.get().dx(); + const auto dy = m_meshObj.get().dy(); + const auto & G = m_meshObj.get().graph(); + + for (auto it=m_data.begin(); it!=m_data.end(); ++it){ + const auto fpos = it->first.pos; + auto & face = it->second; + const int parentCellRowInd = face.parentCellGraphRow; + const auto currCellConnec = G.row(parentCellRowInd); + + GradFdMode fdMode = + (fpos == FacePosition::Left) ? RightSided + : (fpos == FacePosition::Back) ? RightSided + : (fpos == FacePosition::Right) ? LeftSided + : LeftSided; + + const char axis = (face.normalDirection == _faceNormalX) ? 'x' : 'y'; + const auto h = (face.normalDirection == _faceNormalX) ? dx : dy; + + if constexpr (FaceType::N_ == 1){ + face.normalGradient = + face_normal_gradient_for_cell_centered_function_2d(field, currCellConnec, axis, + fdMode, h, numDofPerCell, 0); + } + else{ + for (int j=0; j(1)/static_cast(2); + const auto dxHalf = mesh.dx()*half; + const auto dyHalf = mesh.dy()*half; + + for (auto rowInd : mesh.graphRowsOfCellsStrictlyOnBd()) + { + const bool bL = mesh.cellHasLeftFaceOnBoundary2d(rowInd); + const bool bF = mesh.cellHasFrontFaceOnBoundary2d(rowInd); + const bool bR = mesh.cellHasRightFaceOnBoundary2d(rowInd); + const bool bB = mesh.cellHasBackFaceOnBoundary2d(rowInd); + + const int cellGID = G.row(rowInd)[0]; + const auto cellX = x(cellGID); + const auto cellY = y(cellGID); + const auto cellZ = z(cellGID); + const auto faceCZ = cellZ; + + if (bL){ + const auto faceCX = cellX-dxHalf; + const auto faceCY = cellY; + m_data[MyKey{cellGID, FacePosition::Left}] = + FaceType{{faceCX, faceCY, faceCZ}, {}, rowInd, _faceNormalX}; + } + if (bF){ + const auto faceCX = cellX; + const auto faceCY = cellY+dyHalf; + m_data[MyKey{cellGID, FacePosition::Front}] = + FaceType{{faceCX, faceCY, faceCZ}, {}, rowInd, _faceNormalY}; + } + if (bR){ + const auto faceCX = cellX+dxHalf; + const auto faceCY = cellY; + m_data[MyKey{cellGID, FacePosition::Right}] = + FaceType{{faceCX, faceCY, faceCZ}, {}, rowInd, _faceNormalX}; + } + if (bB){ + const auto faceCX = cellX; + const auto faceCY = cellY-dyHalf; + m_data[MyKey{cellGID, FacePosition::Back}] = + FaceType{{faceCX, faceCY, faceCZ}, {}, rowInd, _faceNormalY}; + } + } + } + +private: + BoundaryFacesNormalGradientScheme m_schemeAtBoundaryFaces; + std::reference_wrapper m_meshObj; + std::unordered_map m_data = {}; +}; + +}} +#endif diff --git a/include/pressiodemoapps/schemes_info.hpp b/include/pressiodemoapps/schemes_info.hpp index 44cdd7d1..a4986c76 100644 --- a/include/pressiodemoapps/schemes_info.hpp +++ b/include/pressiodemoapps/schemes_info.hpp @@ -109,6 +109,19 @@ bool stencilSizeCompatibleWithViscousFluxReconstruction(ViscousFluxReconstructio return false; } +enum class FacePosition{ + Left, Front, Right, Back, Bottom, Top +}; + +enum class GradFdMode{ + ForwardTwoPt, BackwardTwoPt, CenterThreePt, + ForwardThreePt, BackwardThreePt, CenterFivePt +}; + +enum class BoundaryFacesNormalGradientScheme{ + OneSidedFdAutoStencil // this selects the stencil cells automatically using the connectivity +}; + }//end namespace pressiodemoapps #include "./weno.hpp" diff --git a/tests_cpp/CMakeLists.txt b/tests_cpp/CMakeLists.txt index 3f247b2d..266c42fd 100644 --- a/tests_cpp/CMakeLists.txt +++ b/tests_cpp/CMakeLists.txt @@ -27,6 +27,8 @@ add_subdirectory(eigen_rusanov_flux_jacobians_swe) add_subdirectory(create_vec_of_problems) +add_subdirectory(gradients) + # --------------------------------------------------------- # 1d problems # --------------------------------------------------------- diff --git a/tests_cpp/gradients/CMakeLists.txt b/tests_cpp/gradients/CMakeLists.txt new file mode 100644 index 00000000..1ca0f19c --- /dev/null +++ b/tests_cpp/gradients/CMakeLists.txt @@ -0,0 +1,22 @@ + +set(testname gradients_against_sine_function) +set(exename ${testname}_exe) + +set(A "fullmesh_s3;fullmesh_s5;fullmesh_s7;samplemesh_s3;samplemesh_s5;samplemesh_s7") +foreach(id IN LISTS A) + set(SRCDIR ${CMAKE_CURRENT_SOURCE_DIR}/${id}) + set(TMPDIR ${CMAKE_CURRENT_BINARY_DIR}/${id}) + file(MAKE_DIRECTORY ${TMPDIR}) + configure_file(${SRCDIR}/info.dat ${TMPDIR}/info.dat COPYONLY) + configure_file(${SRCDIR}/connectivity.dat ${TMPDIR}/connectivity.dat COPYONLY) + configure_file(${SRCDIR}/coordinates.dat ${TMPDIR}/coordinates.dat COPYONLY) +endforeach() + +configure_file(plot.py plot.py COPYONLY) + +add_executable(${exename} ${CMAKE_CURRENT_SOURCE_DIR}/main.cc) +add_test(NAME ${testname} COMMAND ${exename}) +set_tests_properties(${testname} + PROPERTIES PASS_REGULAR_EXPRESSION "PASS" + FAIL_REGULAR_EXPRESSION "FAILED" + ) diff --git a/tests_cpp/gradients/fullmesh_s3/connectivity.dat b/tests_cpp/gradients/fullmesh_s3/connectivity.dat new file mode 100644 index 00000000..83794306 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s3/connectivity.dat @@ -0,0 +1,180 @@ + 0 -1 12 1 -1 + 1 0 13 2 -1 + 2 1 14 3 -1 + 3 2 15 4 -1 + 4 3 16 5 -1 + 5 4 17 6 -1 + 6 5 18 7 -1 + 7 6 19 8 -1 + 8 7 20 9 -1 + 9 8 21 10 -1 + 10 9 22 11 -1 + 11 10 23 -1 -1 + 12 -1 24 13 0 + 13 12 25 14 1 + 14 13 26 15 2 + 15 14 27 16 3 + 16 15 28 17 4 + 17 16 29 18 5 + 18 17 30 19 6 + 19 18 31 20 7 + 20 19 32 21 8 + 21 20 33 22 9 + 22 21 34 23 10 + 23 22 35 -1 11 + 24 -1 36 25 12 + 25 24 37 26 13 + 26 25 38 27 14 + 27 26 39 28 15 + 28 27 40 29 16 + 29 28 41 30 17 + 30 29 42 31 18 + 31 30 43 32 19 + 32 31 44 33 20 + 33 32 45 34 21 + 34 33 46 35 22 + 35 34 47 -1 23 + 36 -1 48 37 24 + 37 36 49 38 25 + 38 37 50 39 26 + 39 38 51 40 27 + 40 39 52 41 28 + 41 40 53 42 29 + 42 41 54 43 30 + 43 42 55 44 31 + 44 43 56 45 32 + 45 44 57 46 33 + 46 45 58 47 34 + 47 46 59 -1 35 + 48 -1 60 49 36 + 49 48 61 50 37 + 50 49 62 51 38 + 51 50 63 52 39 + 52 51 64 53 40 + 53 52 65 54 41 + 54 53 66 55 42 + 55 54 67 56 43 + 56 55 68 57 44 + 57 56 69 58 45 + 58 57 70 59 46 + 59 58 71 -1 47 + 60 -1 72 61 48 + 61 60 73 62 49 + 62 61 74 63 50 + 63 62 75 64 51 + 64 63 76 65 52 + 65 64 77 66 53 + 66 65 78 67 54 + 67 66 79 68 55 + 68 67 80 69 56 + 69 68 81 70 57 + 70 69 82 71 58 + 71 70 83 -1 59 + 72 -1 84 73 60 + 73 72 85 74 61 + 74 73 86 75 62 + 75 74 87 76 63 + 76 75 88 77 64 + 77 76 89 78 65 + 78 77 90 79 66 + 79 78 91 80 67 + 80 79 92 81 68 + 81 80 93 82 69 + 82 81 94 83 70 + 83 82 95 -1 71 + 84 -1 96 85 72 + 85 84 97 86 73 + 86 85 98 87 74 + 87 86 99 88 75 + 88 87 100 89 76 + 89 88 101 90 77 + 90 89 102 91 78 + 91 90 103 92 79 + 92 91 104 93 80 + 93 92 105 94 81 + 94 93 106 95 82 + 95 94 107 -1 83 + 96 -1 108 97 84 + 97 96 109 98 85 + 98 97 110 99 86 + 99 98 111 100 87 + 100 99 112 101 88 + 101 100 113 102 89 + 102 101 114 103 90 + 103 102 115 104 91 + 104 103 116 105 92 + 105 104 117 106 93 + 106 105 118 107 94 + 107 106 119 -1 95 + 108 -1 120 109 96 + 109 108 121 110 97 + 110 109 122 111 98 + 111 110 123 112 99 + 112 111 124 113 100 + 113 112 125 114 101 + 114 113 126 115 102 + 115 114 127 116 103 + 116 115 128 117 104 + 117 116 129 118 105 + 118 117 130 119 106 + 119 118 131 -1 107 + 120 -1 132 121 108 + 121 120 133 122 109 + 122 121 134 123 110 + 123 122 135 124 111 + 124 123 136 125 112 + 125 124 137 126 113 + 126 125 138 127 114 + 127 126 139 128 115 + 128 127 140 129 116 + 129 128 141 130 117 + 130 129 142 131 118 + 131 130 143 -1 119 + 132 -1 144 133 120 + 133 132 145 134 121 + 134 133 146 135 122 + 135 134 147 136 123 + 136 135 148 137 124 + 137 136 149 138 125 + 138 137 150 139 126 + 139 138 151 140 127 + 140 139 152 141 128 + 141 140 153 142 129 + 142 141 154 143 130 + 143 142 155 -1 131 + 144 -1 156 145 132 + 145 144 157 146 133 + 146 145 158 147 134 + 147 146 159 148 135 + 148 147 160 149 136 + 149 148 161 150 137 + 150 149 162 151 138 + 151 150 163 152 139 + 152 151 164 153 140 + 153 152 165 154 141 + 154 153 166 155 142 + 155 154 167 -1 143 + 156 -1 168 157 144 + 157 156 169 158 145 + 158 157 170 159 146 + 159 158 171 160 147 + 160 159 172 161 148 + 161 160 173 162 149 + 162 161 174 163 150 + 163 162 175 164 151 + 164 163 176 165 152 + 165 164 177 166 153 + 166 165 178 167 154 + 167 166 179 -1 155 + 168 -1 -1 169 156 + 169 168 -1 170 157 + 170 169 -1 171 158 + 171 170 -1 172 159 + 172 171 -1 173 160 + 173 172 -1 174 161 + 174 173 -1 175 162 + 175 174 -1 176 163 + 176 175 -1 177 164 + 177 176 -1 178 165 + 178 177 -1 179 166 + 179 178 -1 -1 167 diff --git a/tests_cpp/gradients/fullmesh_s3/coordinates.dat b/tests_cpp/gradients/fullmesh_s3/coordinates.dat new file mode 100644 index 00000000..3bbe998a --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s3/coordinates.dat @@ -0,0 +1,180 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.20833333333333 0.03333333333333 + 3 0.29166666666667 0.03333333333333 + 4 0.37500000000000 0.03333333333333 + 5 0.45833333333333 0.03333333333333 + 6 0.54166666666667 0.03333333333333 + 7 0.62500000000000 0.03333333333333 + 8 0.70833333333333 0.03333333333333 + 9 0.79166666666667 0.03333333333333 + 10 0.87500000000000 0.03333333333333 + 11 0.95833333333333 0.03333333333333 + 12 0.04166666666667 0.10000000000000 + 13 0.12500000000000 0.10000000000000 + 14 0.20833333333333 0.10000000000000 + 15 0.29166666666667 0.10000000000000 + 16 0.37500000000000 0.10000000000000 + 17 0.45833333333333 0.10000000000000 + 18 0.54166666666667 0.10000000000000 + 19 0.62500000000000 0.10000000000000 + 20 0.70833333333333 0.10000000000000 + 21 0.79166666666667 0.10000000000000 + 22 0.87500000000000 0.10000000000000 + 23 0.95833333333333 0.10000000000000 + 24 0.04166666666667 0.16666666666667 + 25 0.12500000000000 0.16666666666667 + 26 0.20833333333333 0.16666666666667 + 27 0.29166666666667 0.16666666666667 + 28 0.37500000000000 0.16666666666667 + 29 0.45833333333333 0.16666666666667 + 30 0.54166666666667 0.16666666666667 + 31 0.62500000000000 0.16666666666667 + 32 0.70833333333333 0.16666666666667 + 33 0.79166666666667 0.16666666666667 + 34 0.87500000000000 0.16666666666667 + 35 0.95833333333333 0.16666666666667 + 36 0.04166666666667 0.23333333333333 + 37 0.12500000000000 0.23333333333333 + 38 0.20833333333333 0.23333333333333 + 39 0.29166666666667 0.23333333333333 + 40 0.37500000000000 0.23333333333333 + 41 0.45833333333333 0.23333333333333 + 42 0.54166666666667 0.23333333333333 + 43 0.62500000000000 0.23333333333333 + 44 0.70833333333333 0.23333333333333 + 45 0.79166666666667 0.23333333333333 + 46 0.87500000000000 0.23333333333333 + 47 0.95833333333333 0.23333333333333 + 48 0.04166666666667 0.30000000000000 + 49 0.12500000000000 0.30000000000000 + 50 0.20833333333333 0.30000000000000 + 51 0.29166666666667 0.30000000000000 + 52 0.37500000000000 0.30000000000000 + 53 0.45833333333333 0.30000000000000 + 54 0.54166666666667 0.30000000000000 + 55 0.62500000000000 0.30000000000000 + 56 0.70833333333333 0.30000000000000 + 57 0.79166666666667 0.30000000000000 + 58 0.87500000000000 0.30000000000000 + 59 0.95833333333333 0.30000000000000 + 60 0.04166666666667 0.36666666666667 + 61 0.12500000000000 0.36666666666667 + 62 0.20833333333333 0.36666666666667 + 63 0.29166666666667 0.36666666666667 + 64 0.37500000000000 0.36666666666667 + 65 0.45833333333333 0.36666666666667 + 66 0.54166666666667 0.36666666666667 + 67 0.62500000000000 0.36666666666667 + 68 0.70833333333333 0.36666666666667 + 69 0.79166666666667 0.36666666666667 + 70 0.87500000000000 0.36666666666667 + 71 0.95833333333333 0.36666666666667 + 72 0.04166666666667 0.43333333333333 + 73 0.12500000000000 0.43333333333333 + 74 0.20833333333333 0.43333333333333 + 75 0.29166666666667 0.43333333333333 + 76 0.37500000000000 0.43333333333333 + 77 0.45833333333333 0.43333333333333 + 78 0.54166666666667 0.43333333333333 + 79 0.62500000000000 0.43333333333333 + 80 0.70833333333333 0.43333333333333 + 81 0.79166666666667 0.43333333333333 + 82 0.87500000000000 0.43333333333333 + 83 0.95833333333333 0.43333333333333 + 84 0.04166666666667 0.50000000000000 + 85 0.12500000000000 0.50000000000000 + 86 0.20833333333333 0.50000000000000 + 87 0.29166666666667 0.50000000000000 + 88 0.37500000000000 0.50000000000000 + 89 0.45833333333333 0.50000000000000 + 90 0.54166666666667 0.50000000000000 + 91 0.62500000000000 0.50000000000000 + 92 0.70833333333333 0.50000000000000 + 93 0.79166666666667 0.50000000000000 + 94 0.87500000000000 0.50000000000000 + 95 0.95833333333333 0.50000000000000 + 96 0.04166666666667 0.56666666666667 + 97 0.12500000000000 0.56666666666667 + 98 0.20833333333333 0.56666666666667 + 99 0.29166666666667 0.56666666666667 + 100 0.37500000000000 0.56666666666667 + 101 0.45833333333333 0.56666666666667 + 102 0.54166666666667 0.56666666666667 + 103 0.62500000000000 0.56666666666667 + 104 0.70833333333333 0.56666666666667 + 105 0.79166666666667 0.56666666666667 + 106 0.87500000000000 0.56666666666667 + 107 0.95833333333333 0.56666666666667 + 108 0.04166666666667 0.63333333333333 + 109 0.12500000000000 0.63333333333333 + 110 0.20833333333333 0.63333333333333 + 111 0.29166666666667 0.63333333333333 + 112 0.37500000000000 0.63333333333333 + 113 0.45833333333333 0.63333333333333 + 114 0.54166666666667 0.63333333333333 + 115 0.62500000000000 0.63333333333333 + 116 0.70833333333333 0.63333333333333 + 117 0.79166666666667 0.63333333333333 + 118 0.87500000000000 0.63333333333333 + 119 0.95833333333333 0.63333333333333 + 120 0.04166666666667 0.70000000000000 + 121 0.12500000000000 0.70000000000000 + 122 0.20833333333333 0.70000000000000 + 123 0.29166666666667 0.70000000000000 + 124 0.37500000000000 0.70000000000000 + 125 0.45833333333333 0.70000000000000 + 126 0.54166666666667 0.70000000000000 + 127 0.62500000000000 0.70000000000000 + 128 0.70833333333333 0.70000000000000 + 129 0.79166666666667 0.70000000000000 + 130 0.87500000000000 0.70000000000000 + 131 0.95833333333333 0.70000000000000 + 132 0.04166666666667 0.76666666666667 + 133 0.12500000000000 0.76666666666667 + 134 0.20833333333333 0.76666666666667 + 135 0.29166666666667 0.76666666666667 + 136 0.37500000000000 0.76666666666667 + 137 0.45833333333333 0.76666666666667 + 138 0.54166666666667 0.76666666666667 + 139 0.62500000000000 0.76666666666667 + 140 0.70833333333333 0.76666666666667 + 141 0.79166666666667 0.76666666666667 + 142 0.87500000000000 0.76666666666667 + 143 0.95833333333333 0.76666666666667 + 144 0.04166666666667 0.83333333333333 + 145 0.12500000000000 0.83333333333333 + 146 0.20833333333333 0.83333333333333 + 147 0.29166666666667 0.83333333333333 + 148 0.37500000000000 0.83333333333333 + 149 0.45833333333333 0.83333333333333 + 150 0.54166666666667 0.83333333333333 + 151 0.62500000000000 0.83333333333333 + 152 0.70833333333333 0.83333333333333 + 153 0.79166666666667 0.83333333333333 + 154 0.87500000000000 0.83333333333333 + 155 0.95833333333333 0.83333333333333 + 156 0.04166666666667 0.90000000000000 + 157 0.12500000000000 0.90000000000000 + 158 0.20833333333333 0.90000000000000 + 159 0.29166666666667 0.90000000000000 + 160 0.37500000000000 0.90000000000000 + 161 0.45833333333333 0.90000000000000 + 162 0.54166666666667 0.90000000000000 + 163 0.62500000000000 0.90000000000000 + 164 0.70833333333333 0.90000000000000 + 165 0.79166666666667 0.90000000000000 + 166 0.87500000000000 0.90000000000000 + 167 0.95833333333333 0.90000000000000 + 168 0.04166666666667 0.96666666666667 + 169 0.12500000000000 0.96666666666667 + 170 0.20833333333333 0.96666666666667 + 171 0.29166666666667 0.96666666666667 + 172 0.37500000000000 0.96666666666667 + 173 0.45833333333333 0.96666666666667 + 174 0.54166666666667 0.96666666666667 + 175 0.62500000000000 0.96666666666667 + 176 0.70833333333333 0.96666666666667 + 177 0.79166666666667 0.96666666666667 + 178 0.87500000000000 0.96666666666667 + 179 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/fullmesh_s3/info.dat b/tests_cpp/gradients/fullmesh_s3/info.dat new file mode 100644 index 00000000..46f24503 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s3/info.dat @@ -0,0 +1,12 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 180 +stencilMeshSize 180 +stencilSize 3 +nx 12 +ny 15 diff --git a/tests_cpp/gradients/fullmesh_s3/mesh.png b/tests_cpp/gradients/fullmesh_s3/mesh.png new file mode 100644 index 00000000..0ddf9e9e Binary files /dev/null and b/tests_cpp/gradients/fullmesh_s3/mesh.png differ diff --git a/tests_cpp/gradients/fullmesh_s5/connectivity.dat b/tests_cpp/gradients/fullmesh_s5/connectivity.dat new file mode 100644 index 00000000..5a2c2487 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s5/connectivity.dat @@ -0,0 +1,180 @@ + 0 -1 12 1 -1 -1 24 2 -1 + 1 0 13 2 -1 -1 25 3 -1 + 2 1 14 3 -1 0 26 4 -1 + 3 2 15 4 -1 1 27 5 -1 + 4 3 16 5 -1 2 28 6 -1 + 5 4 17 6 -1 3 29 7 -1 + 6 5 18 7 -1 4 30 8 -1 + 7 6 19 8 -1 5 31 9 -1 + 8 7 20 9 -1 6 32 10 -1 + 9 8 21 10 -1 7 33 11 -1 + 10 9 22 11 -1 8 34 -1 -1 + 11 10 23 -1 -1 9 35 -1 -1 + 12 -1 24 13 0 -1 36 14 -1 + 13 12 25 14 1 -1 37 15 -1 + 14 13 26 15 2 12 38 16 -1 + 15 14 27 16 3 13 39 17 -1 + 16 15 28 17 4 14 40 18 -1 + 17 16 29 18 5 15 41 19 -1 + 18 17 30 19 6 16 42 20 -1 + 19 18 31 20 7 17 43 21 -1 + 20 19 32 21 8 18 44 22 -1 + 21 20 33 22 9 19 45 23 -1 + 22 21 34 23 10 20 46 -1 -1 + 23 22 35 -1 11 21 47 -1 -1 + 24 -1 36 25 12 -1 48 26 0 + 25 24 37 26 13 -1 49 27 1 + 26 25 38 27 14 24 50 28 2 + 27 26 39 28 15 25 51 29 3 + 28 27 40 29 16 26 52 30 4 + 29 28 41 30 17 27 53 31 5 + 30 29 42 31 18 28 54 32 6 + 31 30 43 32 19 29 55 33 7 + 32 31 44 33 20 30 56 34 8 + 33 32 45 34 21 31 57 35 9 + 34 33 46 35 22 32 58 -1 10 + 35 34 47 -1 23 33 59 -1 11 + 36 -1 48 37 24 -1 60 38 12 + 37 36 49 38 25 -1 61 39 13 + 38 37 50 39 26 36 62 40 14 + 39 38 51 40 27 37 63 41 15 + 40 39 52 41 28 38 64 42 16 + 41 40 53 42 29 39 65 43 17 + 42 41 54 43 30 40 66 44 18 + 43 42 55 44 31 41 67 45 19 + 44 43 56 45 32 42 68 46 20 + 45 44 57 46 33 43 69 47 21 + 46 45 58 47 34 44 70 -1 22 + 47 46 59 -1 35 45 71 -1 23 + 48 -1 60 49 36 -1 72 50 24 + 49 48 61 50 37 -1 73 51 25 + 50 49 62 51 38 48 74 52 26 + 51 50 63 52 39 49 75 53 27 + 52 51 64 53 40 50 76 54 28 + 53 52 65 54 41 51 77 55 29 + 54 53 66 55 42 52 78 56 30 + 55 54 67 56 43 53 79 57 31 + 56 55 68 57 44 54 80 58 32 + 57 56 69 58 45 55 81 59 33 + 58 57 70 59 46 56 82 -1 34 + 59 58 71 -1 47 57 83 -1 35 + 60 -1 72 61 48 -1 84 62 36 + 61 60 73 62 49 -1 85 63 37 + 62 61 74 63 50 60 86 64 38 + 63 62 75 64 51 61 87 65 39 + 64 63 76 65 52 62 88 66 40 + 65 64 77 66 53 63 89 67 41 + 66 65 78 67 54 64 90 68 42 + 67 66 79 68 55 65 91 69 43 + 68 67 80 69 56 66 92 70 44 + 69 68 81 70 57 67 93 71 45 + 70 69 82 71 58 68 94 -1 46 + 71 70 83 -1 59 69 95 -1 47 + 72 -1 84 73 60 -1 96 74 48 + 73 72 85 74 61 -1 97 75 49 + 74 73 86 75 62 72 98 76 50 + 75 74 87 76 63 73 99 77 51 + 76 75 88 77 64 74 100 78 52 + 77 76 89 78 65 75 101 79 53 + 78 77 90 79 66 76 102 80 54 + 79 78 91 80 67 77 103 81 55 + 80 79 92 81 68 78 104 82 56 + 81 80 93 82 69 79 105 83 57 + 82 81 94 83 70 80 106 -1 58 + 83 82 95 -1 71 81 107 -1 59 + 84 -1 96 85 72 -1 108 86 60 + 85 84 97 86 73 -1 109 87 61 + 86 85 98 87 74 84 110 88 62 + 87 86 99 88 75 85 111 89 63 + 88 87 100 89 76 86 112 90 64 + 89 88 101 90 77 87 113 91 65 + 90 89 102 91 78 88 114 92 66 + 91 90 103 92 79 89 115 93 67 + 92 91 104 93 80 90 116 94 68 + 93 92 105 94 81 91 117 95 69 + 94 93 106 95 82 92 118 -1 70 + 95 94 107 -1 83 93 119 -1 71 + 96 -1 108 97 84 -1 120 98 72 + 97 96 109 98 85 -1 121 99 73 + 98 97 110 99 86 96 122 100 74 + 99 98 111 100 87 97 123 101 75 + 100 99 112 101 88 98 124 102 76 + 101 100 113 102 89 99 125 103 77 + 102 101 114 103 90 100 126 104 78 + 103 102 115 104 91 101 127 105 79 + 104 103 116 105 92 102 128 106 80 + 105 104 117 106 93 103 129 107 81 + 106 105 118 107 94 104 130 -1 82 + 107 106 119 -1 95 105 131 -1 83 + 108 -1 120 109 96 -1 132 110 84 + 109 108 121 110 97 -1 133 111 85 + 110 109 122 111 98 108 134 112 86 + 111 110 123 112 99 109 135 113 87 + 112 111 124 113 100 110 136 114 88 + 113 112 125 114 101 111 137 115 89 + 114 113 126 115 102 112 138 116 90 + 115 114 127 116 103 113 139 117 91 + 116 115 128 117 104 114 140 118 92 + 117 116 129 118 105 115 141 119 93 + 118 117 130 119 106 116 142 -1 94 + 119 118 131 -1 107 117 143 -1 95 + 120 -1 132 121 108 -1 144 122 96 + 121 120 133 122 109 -1 145 123 97 + 122 121 134 123 110 120 146 124 98 + 123 122 135 124 111 121 147 125 99 + 124 123 136 125 112 122 148 126 100 + 125 124 137 126 113 123 149 127 101 + 126 125 138 127 114 124 150 128 102 + 127 126 139 128 115 125 151 129 103 + 128 127 140 129 116 126 152 130 104 + 129 128 141 130 117 127 153 131 105 + 130 129 142 131 118 128 154 -1 106 + 131 130 143 -1 119 129 155 -1 107 + 132 -1 144 133 120 -1 156 134 108 + 133 132 145 134 121 -1 157 135 109 + 134 133 146 135 122 132 158 136 110 + 135 134 147 136 123 133 159 137 111 + 136 135 148 137 124 134 160 138 112 + 137 136 149 138 125 135 161 139 113 + 138 137 150 139 126 136 162 140 114 + 139 138 151 140 127 137 163 141 115 + 140 139 152 141 128 138 164 142 116 + 141 140 153 142 129 139 165 143 117 + 142 141 154 143 130 140 166 -1 118 + 143 142 155 -1 131 141 167 -1 119 + 144 -1 156 145 132 -1 168 146 120 + 145 144 157 146 133 -1 169 147 121 + 146 145 158 147 134 144 170 148 122 + 147 146 159 148 135 145 171 149 123 + 148 147 160 149 136 146 172 150 124 + 149 148 161 150 137 147 173 151 125 + 150 149 162 151 138 148 174 152 126 + 151 150 163 152 139 149 175 153 127 + 152 151 164 153 140 150 176 154 128 + 153 152 165 154 141 151 177 155 129 + 154 153 166 155 142 152 178 -1 130 + 155 154 167 -1 143 153 179 -1 131 + 156 -1 168 157 144 -1 -1 158 132 + 157 156 169 158 145 -1 -1 159 133 + 158 157 170 159 146 156 -1 160 134 + 159 158 171 160 147 157 -1 161 135 + 160 159 172 161 148 158 -1 162 136 + 161 160 173 162 149 159 -1 163 137 + 162 161 174 163 150 160 -1 164 138 + 163 162 175 164 151 161 -1 165 139 + 164 163 176 165 152 162 -1 166 140 + 165 164 177 166 153 163 -1 167 141 + 166 165 178 167 154 164 -1 -1 142 + 167 166 179 -1 155 165 -1 -1 143 + 168 -1 -1 169 156 -1 -1 170 144 + 169 168 -1 170 157 -1 -1 171 145 + 170 169 -1 171 158 168 -1 172 146 + 171 170 -1 172 159 169 -1 173 147 + 172 171 -1 173 160 170 -1 174 148 + 173 172 -1 174 161 171 -1 175 149 + 174 173 -1 175 162 172 -1 176 150 + 175 174 -1 176 163 173 -1 177 151 + 176 175 -1 177 164 174 -1 178 152 + 177 176 -1 178 165 175 -1 179 153 + 178 177 -1 179 166 176 -1 -1 154 + 179 178 -1 -1 167 177 -1 -1 155 diff --git a/tests_cpp/gradients/fullmesh_s5/coordinates.dat b/tests_cpp/gradients/fullmesh_s5/coordinates.dat new file mode 100644 index 00000000..3bbe998a --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s5/coordinates.dat @@ -0,0 +1,180 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.20833333333333 0.03333333333333 + 3 0.29166666666667 0.03333333333333 + 4 0.37500000000000 0.03333333333333 + 5 0.45833333333333 0.03333333333333 + 6 0.54166666666667 0.03333333333333 + 7 0.62500000000000 0.03333333333333 + 8 0.70833333333333 0.03333333333333 + 9 0.79166666666667 0.03333333333333 + 10 0.87500000000000 0.03333333333333 + 11 0.95833333333333 0.03333333333333 + 12 0.04166666666667 0.10000000000000 + 13 0.12500000000000 0.10000000000000 + 14 0.20833333333333 0.10000000000000 + 15 0.29166666666667 0.10000000000000 + 16 0.37500000000000 0.10000000000000 + 17 0.45833333333333 0.10000000000000 + 18 0.54166666666667 0.10000000000000 + 19 0.62500000000000 0.10000000000000 + 20 0.70833333333333 0.10000000000000 + 21 0.79166666666667 0.10000000000000 + 22 0.87500000000000 0.10000000000000 + 23 0.95833333333333 0.10000000000000 + 24 0.04166666666667 0.16666666666667 + 25 0.12500000000000 0.16666666666667 + 26 0.20833333333333 0.16666666666667 + 27 0.29166666666667 0.16666666666667 + 28 0.37500000000000 0.16666666666667 + 29 0.45833333333333 0.16666666666667 + 30 0.54166666666667 0.16666666666667 + 31 0.62500000000000 0.16666666666667 + 32 0.70833333333333 0.16666666666667 + 33 0.79166666666667 0.16666666666667 + 34 0.87500000000000 0.16666666666667 + 35 0.95833333333333 0.16666666666667 + 36 0.04166666666667 0.23333333333333 + 37 0.12500000000000 0.23333333333333 + 38 0.20833333333333 0.23333333333333 + 39 0.29166666666667 0.23333333333333 + 40 0.37500000000000 0.23333333333333 + 41 0.45833333333333 0.23333333333333 + 42 0.54166666666667 0.23333333333333 + 43 0.62500000000000 0.23333333333333 + 44 0.70833333333333 0.23333333333333 + 45 0.79166666666667 0.23333333333333 + 46 0.87500000000000 0.23333333333333 + 47 0.95833333333333 0.23333333333333 + 48 0.04166666666667 0.30000000000000 + 49 0.12500000000000 0.30000000000000 + 50 0.20833333333333 0.30000000000000 + 51 0.29166666666667 0.30000000000000 + 52 0.37500000000000 0.30000000000000 + 53 0.45833333333333 0.30000000000000 + 54 0.54166666666667 0.30000000000000 + 55 0.62500000000000 0.30000000000000 + 56 0.70833333333333 0.30000000000000 + 57 0.79166666666667 0.30000000000000 + 58 0.87500000000000 0.30000000000000 + 59 0.95833333333333 0.30000000000000 + 60 0.04166666666667 0.36666666666667 + 61 0.12500000000000 0.36666666666667 + 62 0.20833333333333 0.36666666666667 + 63 0.29166666666667 0.36666666666667 + 64 0.37500000000000 0.36666666666667 + 65 0.45833333333333 0.36666666666667 + 66 0.54166666666667 0.36666666666667 + 67 0.62500000000000 0.36666666666667 + 68 0.70833333333333 0.36666666666667 + 69 0.79166666666667 0.36666666666667 + 70 0.87500000000000 0.36666666666667 + 71 0.95833333333333 0.36666666666667 + 72 0.04166666666667 0.43333333333333 + 73 0.12500000000000 0.43333333333333 + 74 0.20833333333333 0.43333333333333 + 75 0.29166666666667 0.43333333333333 + 76 0.37500000000000 0.43333333333333 + 77 0.45833333333333 0.43333333333333 + 78 0.54166666666667 0.43333333333333 + 79 0.62500000000000 0.43333333333333 + 80 0.70833333333333 0.43333333333333 + 81 0.79166666666667 0.43333333333333 + 82 0.87500000000000 0.43333333333333 + 83 0.95833333333333 0.43333333333333 + 84 0.04166666666667 0.50000000000000 + 85 0.12500000000000 0.50000000000000 + 86 0.20833333333333 0.50000000000000 + 87 0.29166666666667 0.50000000000000 + 88 0.37500000000000 0.50000000000000 + 89 0.45833333333333 0.50000000000000 + 90 0.54166666666667 0.50000000000000 + 91 0.62500000000000 0.50000000000000 + 92 0.70833333333333 0.50000000000000 + 93 0.79166666666667 0.50000000000000 + 94 0.87500000000000 0.50000000000000 + 95 0.95833333333333 0.50000000000000 + 96 0.04166666666667 0.56666666666667 + 97 0.12500000000000 0.56666666666667 + 98 0.20833333333333 0.56666666666667 + 99 0.29166666666667 0.56666666666667 + 100 0.37500000000000 0.56666666666667 + 101 0.45833333333333 0.56666666666667 + 102 0.54166666666667 0.56666666666667 + 103 0.62500000000000 0.56666666666667 + 104 0.70833333333333 0.56666666666667 + 105 0.79166666666667 0.56666666666667 + 106 0.87500000000000 0.56666666666667 + 107 0.95833333333333 0.56666666666667 + 108 0.04166666666667 0.63333333333333 + 109 0.12500000000000 0.63333333333333 + 110 0.20833333333333 0.63333333333333 + 111 0.29166666666667 0.63333333333333 + 112 0.37500000000000 0.63333333333333 + 113 0.45833333333333 0.63333333333333 + 114 0.54166666666667 0.63333333333333 + 115 0.62500000000000 0.63333333333333 + 116 0.70833333333333 0.63333333333333 + 117 0.79166666666667 0.63333333333333 + 118 0.87500000000000 0.63333333333333 + 119 0.95833333333333 0.63333333333333 + 120 0.04166666666667 0.70000000000000 + 121 0.12500000000000 0.70000000000000 + 122 0.20833333333333 0.70000000000000 + 123 0.29166666666667 0.70000000000000 + 124 0.37500000000000 0.70000000000000 + 125 0.45833333333333 0.70000000000000 + 126 0.54166666666667 0.70000000000000 + 127 0.62500000000000 0.70000000000000 + 128 0.70833333333333 0.70000000000000 + 129 0.79166666666667 0.70000000000000 + 130 0.87500000000000 0.70000000000000 + 131 0.95833333333333 0.70000000000000 + 132 0.04166666666667 0.76666666666667 + 133 0.12500000000000 0.76666666666667 + 134 0.20833333333333 0.76666666666667 + 135 0.29166666666667 0.76666666666667 + 136 0.37500000000000 0.76666666666667 + 137 0.45833333333333 0.76666666666667 + 138 0.54166666666667 0.76666666666667 + 139 0.62500000000000 0.76666666666667 + 140 0.70833333333333 0.76666666666667 + 141 0.79166666666667 0.76666666666667 + 142 0.87500000000000 0.76666666666667 + 143 0.95833333333333 0.76666666666667 + 144 0.04166666666667 0.83333333333333 + 145 0.12500000000000 0.83333333333333 + 146 0.20833333333333 0.83333333333333 + 147 0.29166666666667 0.83333333333333 + 148 0.37500000000000 0.83333333333333 + 149 0.45833333333333 0.83333333333333 + 150 0.54166666666667 0.83333333333333 + 151 0.62500000000000 0.83333333333333 + 152 0.70833333333333 0.83333333333333 + 153 0.79166666666667 0.83333333333333 + 154 0.87500000000000 0.83333333333333 + 155 0.95833333333333 0.83333333333333 + 156 0.04166666666667 0.90000000000000 + 157 0.12500000000000 0.90000000000000 + 158 0.20833333333333 0.90000000000000 + 159 0.29166666666667 0.90000000000000 + 160 0.37500000000000 0.90000000000000 + 161 0.45833333333333 0.90000000000000 + 162 0.54166666666667 0.90000000000000 + 163 0.62500000000000 0.90000000000000 + 164 0.70833333333333 0.90000000000000 + 165 0.79166666666667 0.90000000000000 + 166 0.87500000000000 0.90000000000000 + 167 0.95833333333333 0.90000000000000 + 168 0.04166666666667 0.96666666666667 + 169 0.12500000000000 0.96666666666667 + 170 0.20833333333333 0.96666666666667 + 171 0.29166666666667 0.96666666666667 + 172 0.37500000000000 0.96666666666667 + 173 0.45833333333333 0.96666666666667 + 174 0.54166666666667 0.96666666666667 + 175 0.62500000000000 0.96666666666667 + 176 0.70833333333333 0.96666666666667 + 177 0.79166666666667 0.96666666666667 + 178 0.87500000000000 0.96666666666667 + 179 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/fullmesh_s5/info.dat b/tests_cpp/gradients/fullmesh_s5/info.dat new file mode 100644 index 00000000..1cfcf8b4 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s5/info.dat @@ -0,0 +1,12 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 180 +stencilMeshSize 180 +stencilSize 5 +nx 12 +ny 15 diff --git a/tests_cpp/gradients/fullmesh_s5/mesh.png b/tests_cpp/gradients/fullmesh_s5/mesh.png new file mode 100644 index 00000000..0ddf9e9e Binary files /dev/null and b/tests_cpp/gradients/fullmesh_s5/mesh.png differ diff --git a/tests_cpp/gradients/fullmesh_s7/connectivity.dat b/tests_cpp/gradients/fullmesh_s7/connectivity.dat new file mode 100644 index 00000000..6d7b69c3 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s7/connectivity.dat @@ -0,0 +1,180 @@ + 0 -1 12 1 -1 -1 24 2 -1 -1 36 3 -1 + 1 0 13 2 -1 -1 25 3 -1 -1 37 4 -1 + 2 1 14 3 -1 0 26 4 -1 -1 38 5 -1 + 3 2 15 4 -1 1 27 5 -1 0 39 6 -1 + 4 3 16 5 -1 2 28 6 -1 1 40 7 -1 + 5 4 17 6 -1 3 29 7 -1 2 41 8 -1 + 6 5 18 7 -1 4 30 8 -1 3 42 9 -1 + 7 6 19 8 -1 5 31 9 -1 4 43 10 -1 + 8 7 20 9 -1 6 32 10 -1 5 44 11 -1 + 9 8 21 10 -1 7 33 11 -1 6 45 -1 -1 + 10 9 22 11 -1 8 34 -1 -1 7 46 -1 -1 + 11 10 23 -1 -1 9 35 -1 -1 8 47 -1 -1 + 12 -1 24 13 0 -1 36 14 -1 -1 48 15 -1 + 13 12 25 14 1 -1 37 15 -1 -1 49 16 -1 + 14 13 26 15 2 12 38 16 -1 -1 50 17 -1 + 15 14 27 16 3 13 39 17 -1 12 51 18 -1 + 16 15 28 17 4 14 40 18 -1 13 52 19 -1 + 17 16 29 18 5 15 41 19 -1 14 53 20 -1 + 18 17 30 19 6 16 42 20 -1 15 54 21 -1 + 19 18 31 20 7 17 43 21 -1 16 55 22 -1 + 20 19 32 21 8 18 44 22 -1 17 56 23 -1 + 21 20 33 22 9 19 45 23 -1 18 57 -1 -1 + 22 21 34 23 10 20 46 -1 -1 19 58 -1 -1 + 23 22 35 -1 11 21 47 -1 -1 20 59 -1 -1 + 24 -1 36 25 12 -1 48 26 0 -1 60 27 -1 + 25 24 37 26 13 -1 49 27 1 -1 61 28 -1 + 26 25 38 27 14 24 50 28 2 -1 62 29 -1 + 27 26 39 28 15 25 51 29 3 24 63 30 -1 + 28 27 40 29 16 26 52 30 4 25 64 31 -1 + 29 28 41 30 17 27 53 31 5 26 65 32 -1 + 30 29 42 31 18 28 54 32 6 27 66 33 -1 + 31 30 43 32 19 29 55 33 7 28 67 34 -1 + 32 31 44 33 20 30 56 34 8 29 68 35 -1 + 33 32 45 34 21 31 57 35 9 30 69 -1 -1 + 34 33 46 35 22 32 58 -1 10 31 70 -1 -1 + 35 34 47 -1 23 33 59 -1 11 32 71 -1 -1 + 36 -1 48 37 24 -1 60 38 12 -1 72 39 0 + 37 36 49 38 25 -1 61 39 13 -1 73 40 1 + 38 37 50 39 26 36 62 40 14 -1 74 41 2 + 39 38 51 40 27 37 63 41 15 36 75 42 3 + 40 39 52 41 28 38 64 42 16 37 76 43 4 + 41 40 53 42 29 39 65 43 17 38 77 44 5 + 42 41 54 43 30 40 66 44 18 39 78 45 6 + 43 42 55 44 31 41 67 45 19 40 79 46 7 + 44 43 56 45 32 42 68 46 20 41 80 47 8 + 45 44 57 46 33 43 69 47 21 42 81 -1 9 + 46 45 58 47 34 44 70 -1 22 43 82 -1 10 + 47 46 59 -1 35 45 71 -1 23 44 83 -1 11 + 48 -1 60 49 36 -1 72 50 24 -1 84 51 12 + 49 48 61 50 37 -1 73 51 25 -1 85 52 13 + 50 49 62 51 38 48 74 52 26 -1 86 53 14 + 51 50 63 52 39 49 75 53 27 48 87 54 15 + 52 51 64 53 40 50 76 54 28 49 88 55 16 + 53 52 65 54 41 51 77 55 29 50 89 56 17 + 54 53 66 55 42 52 78 56 30 51 90 57 18 + 55 54 67 56 43 53 79 57 31 52 91 58 19 + 56 55 68 57 44 54 80 58 32 53 92 59 20 + 57 56 69 58 45 55 81 59 33 54 93 -1 21 + 58 57 70 59 46 56 82 -1 34 55 94 -1 22 + 59 58 71 -1 47 57 83 -1 35 56 95 -1 23 + 60 -1 72 61 48 -1 84 62 36 -1 96 63 24 + 61 60 73 62 49 -1 85 63 37 -1 97 64 25 + 62 61 74 63 50 60 86 64 38 -1 98 65 26 + 63 62 75 64 51 61 87 65 39 60 99 66 27 + 64 63 76 65 52 62 88 66 40 61 100 67 28 + 65 64 77 66 53 63 89 67 41 62 101 68 29 + 66 65 78 67 54 64 90 68 42 63 102 69 30 + 67 66 79 68 55 65 91 69 43 64 103 70 31 + 68 67 80 69 56 66 92 70 44 65 104 71 32 + 69 68 81 70 57 67 93 71 45 66 105 -1 33 + 70 69 82 71 58 68 94 -1 46 67 106 -1 34 + 71 70 83 -1 59 69 95 -1 47 68 107 -1 35 + 72 -1 84 73 60 -1 96 74 48 -1 108 75 36 + 73 72 85 74 61 -1 97 75 49 -1 109 76 37 + 74 73 86 75 62 72 98 76 50 -1 110 77 38 + 75 74 87 76 63 73 99 77 51 72 111 78 39 + 76 75 88 77 64 74 100 78 52 73 112 79 40 + 77 76 89 78 65 75 101 79 53 74 113 80 41 + 78 77 90 79 66 76 102 80 54 75 114 81 42 + 79 78 91 80 67 77 103 81 55 76 115 82 43 + 80 79 92 81 68 78 104 82 56 77 116 83 44 + 81 80 93 82 69 79 105 83 57 78 117 -1 45 + 82 81 94 83 70 80 106 -1 58 79 118 -1 46 + 83 82 95 -1 71 81 107 -1 59 80 119 -1 47 + 84 -1 96 85 72 -1 108 86 60 -1 120 87 48 + 85 84 97 86 73 -1 109 87 61 -1 121 88 49 + 86 85 98 87 74 84 110 88 62 -1 122 89 50 + 87 86 99 88 75 85 111 89 63 84 123 90 51 + 88 87 100 89 76 86 112 90 64 85 124 91 52 + 89 88 101 90 77 87 113 91 65 86 125 92 53 + 90 89 102 91 78 88 114 92 66 87 126 93 54 + 91 90 103 92 79 89 115 93 67 88 127 94 55 + 92 91 104 93 80 90 116 94 68 89 128 95 56 + 93 92 105 94 81 91 117 95 69 90 129 -1 57 + 94 93 106 95 82 92 118 -1 70 91 130 -1 58 + 95 94 107 -1 83 93 119 -1 71 92 131 -1 59 + 96 -1 108 97 84 -1 120 98 72 -1 132 99 60 + 97 96 109 98 85 -1 121 99 73 -1 133 100 61 + 98 97 110 99 86 96 122 100 74 -1 134 101 62 + 99 98 111 100 87 97 123 101 75 96 135 102 63 + 100 99 112 101 88 98 124 102 76 97 136 103 64 + 101 100 113 102 89 99 125 103 77 98 137 104 65 + 102 101 114 103 90 100 126 104 78 99 138 105 66 + 103 102 115 104 91 101 127 105 79 100 139 106 67 + 104 103 116 105 92 102 128 106 80 101 140 107 68 + 105 104 117 106 93 103 129 107 81 102 141 -1 69 + 106 105 118 107 94 104 130 -1 82 103 142 -1 70 + 107 106 119 -1 95 105 131 -1 83 104 143 -1 71 + 108 -1 120 109 96 -1 132 110 84 -1 144 111 72 + 109 108 121 110 97 -1 133 111 85 -1 145 112 73 + 110 109 122 111 98 108 134 112 86 -1 146 113 74 + 111 110 123 112 99 109 135 113 87 108 147 114 75 + 112 111 124 113 100 110 136 114 88 109 148 115 76 + 113 112 125 114 101 111 137 115 89 110 149 116 77 + 114 113 126 115 102 112 138 116 90 111 150 117 78 + 115 114 127 116 103 113 139 117 91 112 151 118 79 + 116 115 128 117 104 114 140 118 92 113 152 119 80 + 117 116 129 118 105 115 141 119 93 114 153 -1 81 + 118 117 130 119 106 116 142 -1 94 115 154 -1 82 + 119 118 131 -1 107 117 143 -1 95 116 155 -1 83 + 120 -1 132 121 108 -1 144 122 96 -1 156 123 84 + 121 120 133 122 109 -1 145 123 97 -1 157 124 85 + 122 121 134 123 110 120 146 124 98 -1 158 125 86 + 123 122 135 124 111 121 147 125 99 120 159 126 87 + 124 123 136 125 112 122 148 126 100 121 160 127 88 + 125 124 137 126 113 123 149 127 101 122 161 128 89 + 126 125 138 127 114 124 150 128 102 123 162 129 90 + 127 126 139 128 115 125 151 129 103 124 163 130 91 + 128 127 140 129 116 126 152 130 104 125 164 131 92 + 129 128 141 130 117 127 153 131 105 126 165 -1 93 + 130 129 142 131 118 128 154 -1 106 127 166 -1 94 + 131 130 143 -1 119 129 155 -1 107 128 167 -1 95 + 132 -1 144 133 120 -1 156 134 108 -1 168 135 96 + 133 132 145 134 121 -1 157 135 109 -1 169 136 97 + 134 133 146 135 122 132 158 136 110 -1 170 137 98 + 135 134 147 136 123 133 159 137 111 132 171 138 99 + 136 135 148 137 124 134 160 138 112 133 172 139 100 + 137 136 149 138 125 135 161 139 113 134 173 140 101 + 138 137 150 139 126 136 162 140 114 135 174 141 102 + 139 138 151 140 127 137 163 141 115 136 175 142 103 + 140 139 152 141 128 138 164 142 116 137 176 143 104 + 141 140 153 142 129 139 165 143 117 138 177 -1 105 + 142 141 154 143 130 140 166 -1 118 139 178 -1 106 + 143 142 155 -1 131 141 167 -1 119 140 179 -1 107 + 144 -1 156 145 132 -1 168 146 120 -1 -1 147 108 + 145 144 157 146 133 -1 169 147 121 -1 -1 148 109 + 146 145 158 147 134 144 170 148 122 -1 -1 149 110 + 147 146 159 148 135 145 171 149 123 144 -1 150 111 + 148 147 160 149 136 146 172 150 124 145 -1 151 112 + 149 148 161 150 137 147 173 151 125 146 -1 152 113 + 150 149 162 151 138 148 174 152 126 147 -1 153 114 + 151 150 163 152 139 149 175 153 127 148 -1 154 115 + 152 151 164 153 140 150 176 154 128 149 -1 155 116 + 153 152 165 154 141 151 177 155 129 150 -1 -1 117 + 154 153 166 155 142 152 178 -1 130 151 -1 -1 118 + 155 154 167 -1 143 153 179 -1 131 152 -1 -1 119 + 156 -1 168 157 144 -1 -1 158 132 -1 -1 159 120 + 157 156 169 158 145 -1 -1 159 133 -1 -1 160 121 + 158 157 170 159 146 156 -1 160 134 -1 -1 161 122 + 159 158 171 160 147 157 -1 161 135 156 -1 162 123 + 160 159 172 161 148 158 -1 162 136 157 -1 163 124 + 161 160 173 162 149 159 -1 163 137 158 -1 164 125 + 162 161 174 163 150 160 -1 164 138 159 -1 165 126 + 163 162 175 164 151 161 -1 165 139 160 -1 166 127 + 164 163 176 165 152 162 -1 166 140 161 -1 167 128 + 165 164 177 166 153 163 -1 167 141 162 -1 -1 129 + 166 165 178 167 154 164 -1 -1 142 163 -1 -1 130 + 167 166 179 -1 155 165 -1 -1 143 164 -1 -1 131 + 168 -1 -1 169 156 -1 -1 170 144 -1 -1 171 132 + 169 168 -1 170 157 -1 -1 171 145 -1 -1 172 133 + 170 169 -1 171 158 168 -1 172 146 -1 -1 173 134 + 171 170 -1 172 159 169 -1 173 147 168 -1 174 135 + 172 171 -1 173 160 170 -1 174 148 169 -1 175 136 + 173 172 -1 174 161 171 -1 175 149 170 -1 176 137 + 174 173 -1 175 162 172 -1 176 150 171 -1 177 138 + 175 174 -1 176 163 173 -1 177 151 172 -1 178 139 + 176 175 -1 177 164 174 -1 178 152 173 -1 179 140 + 177 176 -1 178 165 175 -1 179 153 174 -1 -1 141 + 178 177 -1 179 166 176 -1 -1 154 175 -1 -1 142 + 179 178 -1 -1 167 177 -1 -1 155 176 -1 -1 143 diff --git a/tests_cpp/gradients/fullmesh_s7/coordinates.dat b/tests_cpp/gradients/fullmesh_s7/coordinates.dat new file mode 100644 index 00000000..3bbe998a --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s7/coordinates.dat @@ -0,0 +1,180 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.20833333333333 0.03333333333333 + 3 0.29166666666667 0.03333333333333 + 4 0.37500000000000 0.03333333333333 + 5 0.45833333333333 0.03333333333333 + 6 0.54166666666667 0.03333333333333 + 7 0.62500000000000 0.03333333333333 + 8 0.70833333333333 0.03333333333333 + 9 0.79166666666667 0.03333333333333 + 10 0.87500000000000 0.03333333333333 + 11 0.95833333333333 0.03333333333333 + 12 0.04166666666667 0.10000000000000 + 13 0.12500000000000 0.10000000000000 + 14 0.20833333333333 0.10000000000000 + 15 0.29166666666667 0.10000000000000 + 16 0.37500000000000 0.10000000000000 + 17 0.45833333333333 0.10000000000000 + 18 0.54166666666667 0.10000000000000 + 19 0.62500000000000 0.10000000000000 + 20 0.70833333333333 0.10000000000000 + 21 0.79166666666667 0.10000000000000 + 22 0.87500000000000 0.10000000000000 + 23 0.95833333333333 0.10000000000000 + 24 0.04166666666667 0.16666666666667 + 25 0.12500000000000 0.16666666666667 + 26 0.20833333333333 0.16666666666667 + 27 0.29166666666667 0.16666666666667 + 28 0.37500000000000 0.16666666666667 + 29 0.45833333333333 0.16666666666667 + 30 0.54166666666667 0.16666666666667 + 31 0.62500000000000 0.16666666666667 + 32 0.70833333333333 0.16666666666667 + 33 0.79166666666667 0.16666666666667 + 34 0.87500000000000 0.16666666666667 + 35 0.95833333333333 0.16666666666667 + 36 0.04166666666667 0.23333333333333 + 37 0.12500000000000 0.23333333333333 + 38 0.20833333333333 0.23333333333333 + 39 0.29166666666667 0.23333333333333 + 40 0.37500000000000 0.23333333333333 + 41 0.45833333333333 0.23333333333333 + 42 0.54166666666667 0.23333333333333 + 43 0.62500000000000 0.23333333333333 + 44 0.70833333333333 0.23333333333333 + 45 0.79166666666667 0.23333333333333 + 46 0.87500000000000 0.23333333333333 + 47 0.95833333333333 0.23333333333333 + 48 0.04166666666667 0.30000000000000 + 49 0.12500000000000 0.30000000000000 + 50 0.20833333333333 0.30000000000000 + 51 0.29166666666667 0.30000000000000 + 52 0.37500000000000 0.30000000000000 + 53 0.45833333333333 0.30000000000000 + 54 0.54166666666667 0.30000000000000 + 55 0.62500000000000 0.30000000000000 + 56 0.70833333333333 0.30000000000000 + 57 0.79166666666667 0.30000000000000 + 58 0.87500000000000 0.30000000000000 + 59 0.95833333333333 0.30000000000000 + 60 0.04166666666667 0.36666666666667 + 61 0.12500000000000 0.36666666666667 + 62 0.20833333333333 0.36666666666667 + 63 0.29166666666667 0.36666666666667 + 64 0.37500000000000 0.36666666666667 + 65 0.45833333333333 0.36666666666667 + 66 0.54166666666667 0.36666666666667 + 67 0.62500000000000 0.36666666666667 + 68 0.70833333333333 0.36666666666667 + 69 0.79166666666667 0.36666666666667 + 70 0.87500000000000 0.36666666666667 + 71 0.95833333333333 0.36666666666667 + 72 0.04166666666667 0.43333333333333 + 73 0.12500000000000 0.43333333333333 + 74 0.20833333333333 0.43333333333333 + 75 0.29166666666667 0.43333333333333 + 76 0.37500000000000 0.43333333333333 + 77 0.45833333333333 0.43333333333333 + 78 0.54166666666667 0.43333333333333 + 79 0.62500000000000 0.43333333333333 + 80 0.70833333333333 0.43333333333333 + 81 0.79166666666667 0.43333333333333 + 82 0.87500000000000 0.43333333333333 + 83 0.95833333333333 0.43333333333333 + 84 0.04166666666667 0.50000000000000 + 85 0.12500000000000 0.50000000000000 + 86 0.20833333333333 0.50000000000000 + 87 0.29166666666667 0.50000000000000 + 88 0.37500000000000 0.50000000000000 + 89 0.45833333333333 0.50000000000000 + 90 0.54166666666667 0.50000000000000 + 91 0.62500000000000 0.50000000000000 + 92 0.70833333333333 0.50000000000000 + 93 0.79166666666667 0.50000000000000 + 94 0.87500000000000 0.50000000000000 + 95 0.95833333333333 0.50000000000000 + 96 0.04166666666667 0.56666666666667 + 97 0.12500000000000 0.56666666666667 + 98 0.20833333333333 0.56666666666667 + 99 0.29166666666667 0.56666666666667 + 100 0.37500000000000 0.56666666666667 + 101 0.45833333333333 0.56666666666667 + 102 0.54166666666667 0.56666666666667 + 103 0.62500000000000 0.56666666666667 + 104 0.70833333333333 0.56666666666667 + 105 0.79166666666667 0.56666666666667 + 106 0.87500000000000 0.56666666666667 + 107 0.95833333333333 0.56666666666667 + 108 0.04166666666667 0.63333333333333 + 109 0.12500000000000 0.63333333333333 + 110 0.20833333333333 0.63333333333333 + 111 0.29166666666667 0.63333333333333 + 112 0.37500000000000 0.63333333333333 + 113 0.45833333333333 0.63333333333333 + 114 0.54166666666667 0.63333333333333 + 115 0.62500000000000 0.63333333333333 + 116 0.70833333333333 0.63333333333333 + 117 0.79166666666667 0.63333333333333 + 118 0.87500000000000 0.63333333333333 + 119 0.95833333333333 0.63333333333333 + 120 0.04166666666667 0.70000000000000 + 121 0.12500000000000 0.70000000000000 + 122 0.20833333333333 0.70000000000000 + 123 0.29166666666667 0.70000000000000 + 124 0.37500000000000 0.70000000000000 + 125 0.45833333333333 0.70000000000000 + 126 0.54166666666667 0.70000000000000 + 127 0.62500000000000 0.70000000000000 + 128 0.70833333333333 0.70000000000000 + 129 0.79166666666667 0.70000000000000 + 130 0.87500000000000 0.70000000000000 + 131 0.95833333333333 0.70000000000000 + 132 0.04166666666667 0.76666666666667 + 133 0.12500000000000 0.76666666666667 + 134 0.20833333333333 0.76666666666667 + 135 0.29166666666667 0.76666666666667 + 136 0.37500000000000 0.76666666666667 + 137 0.45833333333333 0.76666666666667 + 138 0.54166666666667 0.76666666666667 + 139 0.62500000000000 0.76666666666667 + 140 0.70833333333333 0.76666666666667 + 141 0.79166666666667 0.76666666666667 + 142 0.87500000000000 0.76666666666667 + 143 0.95833333333333 0.76666666666667 + 144 0.04166666666667 0.83333333333333 + 145 0.12500000000000 0.83333333333333 + 146 0.20833333333333 0.83333333333333 + 147 0.29166666666667 0.83333333333333 + 148 0.37500000000000 0.83333333333333 + 149 0.45833333333333 0.83333333333333 + 150 0.54166666666667 0.83333333333333 + 151 0.62500000000000 0.83333333333333 + 152 0.70833333333333 0.83333333333333 + 153 0.79166666666667 0.83333333333333 + 154 0.87500000000000 0.83333333333333 + 155 0.95833333333333 0.83333333333333 + 156 0.04166666666667 0.90000000000000 + 157 0.12500000000000 0.90000000000000 + 158 0.20833333333333 0.90000000000000 + 159 0.29166666666667 0.90000000000000 + 160 0.37500000000000 0.90000000000000 + 161 0.45833333333333 0.90000000000000 + 162 0.54166666666667 0.90000000000000 + 163 0.62500000000000 0.90000000000000 + 164 0.70833333333333 0.90000000000000 + 165 0.79166666666667 0.90000000000000 + 166 0.87500000000000 0.90000000000000 + 167 0.95833333333333 0.90000000000000 + 168 0.04166666666667 0.96666666666667 + 169 0.12500000000000 0.96666666666667 + 170 0.20833333333333 0.96666666666667 + 171 0.29166666666667 0.96666666666667 + 172 0.37500000000000 0.96666666666667 + 173 0.45833333333333 0.96666666666667 + 174 0.54166666666667 0.96666666666667 + 175 0.62500000000000 0.96666666666667 + 176 0.70833333333333 0.96666666666667 + 177 0.79166666666667 0.96666666666667 + 178 0.87500000000000 0.96666666666667 + 179 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/fullmesh_s7/info.dat b/tests_cpp/gradients/fullmesh_s7/info.dat new file mode 100644 index 00000000..01033853 --- /dev/null +++ b/tests_cpp/gradients/fullmesh_s7/info.dat @@ -0,0 +1,12 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 180 +stencilMeshSize 180 +stencilSize 7 +nx 12 +ny 15 diff --git a/tests_cpp/gradients/fullmesh_s7/mesh.png b/tests_cpp/gradients/fullmesh_s7/mesh.png new file mode 100644 index 00000000..0ddf9e9e Binary files /dev/null and b/tests_cpp/gradients/fullmesh_s7/mesh.png differ diff --git a/tests_cpp/gradients/main.cc b/tests_cpp/gradients/main.cc new file mode 100644 index 00000000..6ebd37f4 --- /dev/null +++ b/tests_cpp/gradients/main.cc @@ -0,0 +1,289 @@ +#include +#include "pressiodemoapps/mesh.hpp" +#include "pressiodemoapps/gradient.hpp" +#include + +template +T sinef(const T & x, const T & y){ + return std::sin(M_PI * x * y); +} + +template +T gradsinex(const T & x, const T & y){ + return y*M_PI*std::cos(M_PI * x * y); +} + +template +T gradsiney(const T & x, const T & y){ + return x*M_PI*std::cos(M_PI * x * y); +} + + +template +std::pair do_test_api_A(const MeshType& mesh, const std::string & ss) +{ + /* this test the api where we pass a function one dof per cell */ + + namespace pda = pressiodemoapps; + std::cout << "Gradient test for " << ss << '\n'; + + // function to compute grad of + const auto & x = mesh.viewX(); + const auto & y = mesh.viewY(); + Eigen::VectorXd f(mesh.stencilMeshSize()); + for (int i=0; i +auto do_test_api_B(const MeshType& mesh, + const std::string & ss, + int numDofPerCell) +{ + /* test the api where we pass a function that has multiple dof per cell + and here for simplicity we just mimic this by simply repeating + the sine function multiple times + */ + + namespace pda = pressiodemoapps; + std::cout << "Gradient test for " << ss << ' ' + << " MaxNumDofPerCell = " << MaxNumDofPerCell << ' ' + << " numDofPerCell = " << numDofPerCell << '\n'; + + // function to compute grad of + const auto & x = mesh.viewX(); + const auto & y = mesh.viewY(); + Eigen::VectorXd f(mesh.stencilMeshSize()*numDofPerCell); + for (int i=0; i grads(mesh); + grads(f, numDofPerCell); + + const auto & G = mesh.graph(); + const auto & rowsCellsOnBD = mesh.graphRowsOfCellsStrictlyOnBd(); + std::ofstream file; file.open("pda_result" + ss + ".txt"); + + std::array errorGradX = {}; + std::array errorGradY = {}; + int count = 0; + for (auto rowInd : rowsCellsOnBD){ + const bool bL = mesh.cellHasLeftFaceOnBoundary2d(rowInd); + const bool bF = mesh.cellHasFrontFaceOnBoundary2d(rowInd); + const bool bR = mesh.cellHasRightFaceOnBoundary2d(rowInd); + const bool bB = mesh.cellHasBackFaceOnBoundary2d(rowInd); + const int cellGID = G(rowInd, 0); + + if (bL){ + auto & face = grads.queryFace(cellGID, pda::FacePosition::Left); + const auto gold = gradsinex(face.centerCoordinates[0], face.centerCoordinates[1]); + assert(face.normalGradient.size() == MaxNumDofPerCell); + for (int j=0; j & goldData, + const std::string & meshstring, + int ss) +{ + namespace pda = pressiodemoapps; + const std::string caseID = meshstring + "_s" + std::to_string(ss); + auto mesh = pda::load_cellcentered_uniform_mesh_eigen(caseID); + const auto [eX, eY] = do_test_api_A(mesh, caseID); + std::cout << " eX = " << eX << " eY = " << eY << '\n'; + std::cout << "\n"; + + if (std::abs(eX - goldData.at(caseID).rmseGX) > 1e-6){ return false; } + if (std::abs(eY - goldData.at(caseID).rmseGY) > 1e-6){ return false; } + return true; +} + +template +bool test_driver_B(const std::unordered_map & goldData, + const std::string & meshstring, + int ss, + int numDofPerCell) +{ + namespace pda = pressiodemoapps; + const std::string caseID = meshstring + "_s" + std::to_string(ss); + auto mesh = pda::load_cellcentered_uniform_mesh_eigen(caseID); + const auto [eX, eY] = do_test_api_B(mesh, caseID, numDofPerCell); + for (int j=0; j goldData = + { {"fullmesh_s3", {0.118044, 0.082173}}, + {"samplemesh_s3", {0.134392, 0.0759626}}, + {"fullmesh_s5", {0.0512737, 0.0298508}}, + {"samplemesh_s5", {0.0682185, 0.0307574}}, + {"fullmesh_s7", {0.0512737, 0.0298508}}, + {"samplemesh_s7", {0.0682185, 0.0307574}} + }; + // NOTE: the case for s5 and s7 is the same because at the time this test + // is written, for both cases the stencil used for the gradient is + // a 3 pt one sided FD which is supported when s5 and s7. + // Whereas for s3 the FD stencil for gradient is 2pt stencil + // which, indeed, yields higher error. + + std::vector flags; + for (auto ss : {3}){//,5,7}){ + flags.push_back(test_driver_A(goldData, "fullmesh", ss)); + flags.push_back(test_driver_A(goldData, "samplemesh", ss)); + + { + constexpr int maxNumDofPerCell = 3; + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 1)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 2)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 3)); + } + + { + constexpr int maxNumDofPerCell = 5; + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 1)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 2)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 3)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 4)); + flags.push_back(test_driver_B(goldData, "fullmesh", ss, 5)); + } + } + + if (std::any_of(flags.begin(), flags.end(), [](auto v){ return (v==false); })){ + std::puts("FAILED"); return 0; + } + + std::puts("PASS"); + return 0; +} diff --git a/tests_cpp/gradients/plot.py b/tests_cpp/gradients/plot.py new file mode 100644 index 00000000..b1b52c19 --- /dev/null +++ b/tests_cpp/gradients/plot.py @@ -0,0 +1,80 @@ + +import re, math +import numpy as np +import matplotlib.pyplot as plt + +def fun(x,y): + return np.sin(math.pi * x * y) + +def gradX(x,y): + return math.pi*y*np.cos(math.pi * x * y) + +def gradY(x,y): + return math.pi*x*np.cos(math.pi * x * y) + +def extractN(ns,meshPath): + reg = re.compile(r''+ns+'.+') + file1 = open(meshPath+'/info.dat', 'r') + strings = re.search(reg, file1.read()) + file1.close() + assert(strings) + return int(strings.group().split()[1]) + +D = np.loadtxt("pda_resultsample_mesh_ss_7.txt") +mask_gx = (D[:,4] == 1) +mask_gy = (D[:,4] == 2) +Xpt_gx = D[mask_gx,0] +Ypt_gx = D[mask_gx,1] +Xpt_gy = D[mask_gy,0] +Ypt_gy = D[mask_gy,1] +comp_gx_V = D[mask_gx,2] +comp_gy_V = D[mask_gy,2] +gold_gx_V = D[mask_gx,3] +gold_gy_V = D[mask_gy,3] + + + +meshPath = "./fullmesh_s3" +nx = extractN('nx',meshPath) +ny = extractN('ny',meshPath) +print(nx, ny) + +x = np.linspace(0, 1., nx) +y = np.linspace(0, 1., ny) +xv, yv = np.meshgrid(x, y) + +f = fun(xv,yv) +fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) +ax.view_init(21, -32) +surf = ax.plot_surface(xv, yv, f, linewidth=0, antialiased=False) +ax.set_title("function") + +gx = gradX(xv,yv) +fig, ax1 = plt.subplots(subplot_kw={"projection": "3d"}) +ax1.view_init(21, -32) +ax1.plot_surface(xv, yv, gx, linewidth=0, antialiased=False, alpha=0.5) +ax1.set_title("grad_X") + +gx = gradY(xv,yv) +fig, ax2 = plt.subplots(subplot_kw={"projection": "3d"}) +ax2.view_init(21, -32) +ax2.plot_surface(xv, yv, gx, linewidth=0, antialiased=False, alpha=0.5) +ax2.set_title("grad_Y") + +ax1.scatter3D(Xpt_gx, Ypt_gx, comp_gx_V, alpha=0.9) +ax2.scatter3D(Xpt_gy, Ypt_gy, comp_gy_V, alpha=0.9) +ax1.legend() +ax2.legend() + +fig, ax3 = plt.subplots() +fig, ax4 = plt.subplots() +ax3.plot(gold_gx_V,'o', label="gold") +ax3.plot(comp_gx_V,'*', label="computed") +ax4.plot(gold_gy_V,'o', label="gold") +ax4.plot(comp_gy_V,'*', label="computed") +ax3.set_title("grad_X") +ax4.set_title("grad_Y") +ax3.legend() +ax4.legend() + +plt.show() diff --git a/tests_cpp/gradients/samplemesh_s3/connectivity.dat b/tests_cpp/gradients/samplemesh_s3/connectivity.dat new file mode 100644 index 00000000..c0c45469 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s3/connectivity.dat @@ -0,0 +1,25 @@ + 0 -1 6 1 -1 + 3 2 8 4 -1 + 5 4 9 -1 -1 + 12 11 18 13 7 + 16 15 21 17 10 + 20 19 23 -1 14 + 23 22 28 -1 20 + 26 25 33 27 21 + 29 -1 35 30 24 + 32 31 36 33 25 + 40 39 47 41 34 + 43 42 50 44 37 + 45 44 51 46 38 + 53 52 56 54 48 + 54 53 57 -1 49 + 57 56 62 -1 54 + 60 59 67 61 55 + 63 -1 69 64 58 + 66 65 73 67 59 + 69 -1 76 70 63 + 75 74 85 -1 68 + 76 -1 -1 77 69 + 79 78 -1 80 71 + 82 81 -1 83 72 + 83 82 -1 84 73 diff --git a/tests_cpp/gradients/samplemesh_s3/coordinates.dat b/tests_cpp/gradients/samplemesh_s3/coordinates.dat new file mode 100644 index 00000000..e285cdff --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s3/coordinates.dat @@ -0,0 +1,86 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.70833333333333 0.03333333333333 + 3 0.79166666666667 0.03333333333333 + 4 0.87500000000000 0.03333333333333 + 5 0.95833333333333 0.03333333333333 + 6 0.04166666666667 0.10000000000000 + 7 0.70833333333333 0.10000000000000 + 8 0.79166666666667 0.10000000000000 + 9 0.95833333333333 0.10000000000000 + 10 0.45833333333333 0.16666666666667 + 11 0.62500000000000 0.16666666666667 + 12 0.70833333333333 0.16666666666667 + 13 0.79166666666667 0.16666666666667 + 14 0.95833333333333 0.16666666666667 + 15 0.37500000000000 0.23333333333333 + 16 0.45833333333333 0.23333333333333 + 17 0.54166666666667 0.23333333333333 + 18 0.70833333333333 0.23333333333333 + 19 0.87500000000000 0.23333333333333 + 20 0.95833333333333 0.23333333333333 + 21 0.45833333333333 0.30000000000000 + 22 0.87500000000000 0.30000000000000 + 23 0.95833333333333 0.30000000000000 + 24 0.04166666666667 0.36666666666667 + 25 0.37500000000000 0.36666666666667 + 26 0.45833333333333 0.36666666666667 + 27 0.54166666666667 0.36666666666667 + 28 0.95833333333333 0.36666666666667 + 29 0.04166666666667 0.43333333333333 + 30 0.12500000000000 0.43333333333333 + 31 0.29166666666667 0.43333333333333 + 32 0.37500000000000 0.43333333333333 + 33 0.45833333333333 0.43333333333333 + 34 0.79166666666667 0.43333333333333 + 35 0.04166666666667 0.50000000000000 + 36 0.37500000000000 0.50000000000000 + 37 0.45833333333333 0.50000000000000 + 38 0.62500000000000 0.50000000000000 + 39 0.70833333333333 0.50000000000000 + 40 0.79166666666667 0.50000000000000 + 41 0.87500000000000 0.50000000000000 + 42 0.37500000000000 0.56666666666667 + 43 0.45833333333333 0.56666666666667 + 44 0.54166666666667 0.56666666666667 + 45 0.62500000000000 0.56666666666667 + 46 0.70833333333333 0.56666666666667 + 47 0.79166666666667 0.56666666666667 + 48 0.87500000000000 0.56666666666667 + 49 0.95833333333333 0.56666666666667 + 50 0.45833333333333 0.63333333333333 + 51 0.62500000000000 0.63333333333333 + 52 0.79166666666667 0.63333333333333 + 53 0.87500000000000 0.63333333333333 + 54 0.95833333333333 0.63333333333333 + 55 0.70833333333333 0.70000000000000 + 56 0.87500000000000 0.70000000000000 + 57 0.95833333333333 0.70000000000000 + 58 0.04166666666667 0.76666666666667 + 59 0.62500000000000 0.76666666666667 + 60 0.70833333333333 0.76666666666667 + 61 0.79166666666667 0.76666666666667 + 62 0.95833333333333 0.76666666666667 + 63 0.04166666666667 0.83333333333333 + 64 0.12500000000000 0.83333333333333 + 65 0.54166666666667 0.83333333333333 + 66 0.62500000000000 0.83333333333333 + 67 0.70833333333333 0.83333333333333 + 68 0.95833333333333 0.83333333333333 + 69 0.04166666666667 0.90000000000000 + 70 0.12500000000000 0.90000000000000 + 71 0.29166666666667 0.90000000000000 + 72 0.54166666666667 0.90000000000000 + 73 0.62500000000000 0.90000000000000 + 74 0.87500000000000 0.90000000000000 + 75 0.95833333333333 0.90000000000000 + 76 0.04166666666667 0.96666666666667 + 77 0.12500000000000 0.96666666666667 + 78 0.20833333333333 0.96666666666667 + 79 0.29166666666667 0.96666666666667 + 80 0.37500000000000 0.96666666666667 + 81 0.45833333333333 0.96666666666667 + 82 0.54166666666667 0.96666666666667 + 83 0.62500000000000 0.96666666666667 + 84 0.70833333333333 0.96666666666667 + 85 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/samplemesh_s3/info.dat b/tests_cpp/gradients/samplemesh_s3/info.dat new file mode 100644 index 00000000..d60b8c36 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s3/info.dat @@ -0,0 +1,10 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 25 +stencilMeshSize 86 +stencilSize 3 diff --git a/tests_cpp/gradients/samplemesh_s3/mesh.png b/tests_cpp/gradients/samplemesh_s3/mesh.png new file mode 100644 index 00000000..cc76f714 Binary files /dev/null and b/tests_cpp/gradients/samplemesh_s3/mesh.png differ diff --git a/tests_cpp/gradients/samplemesh_s3/sample_mesh_gids.txt b/tests_cpp/gradients/samplemesh_s3/sample_mesh_gids.txt new file mode 100644 index 00000000..1db15275 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s3/sample_mesh_gids.txt @@ -0,0 +1,25 @@ +0 +9 +11 +32 +41 +47 +59 +65 +72 +76 +93 +101 +103 +118 +119 +131 +140 +144 +151 +156 +167 +168 +171 +174 +175 diff --git a/tests_cpp/gradients/samplemesh_s3/stencil_mesh_gids.dat b/tests_cpp/gradients/samplemesh_s3/stencil_mesh_gids.dat new file mode 100644 index 00000000..cbee58be --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s3/stencil_mesh_gids.dat @@ -0,0 +1,86 @@ + 0 + 1 + 8 + 9 + 10 + 11 + 12 + 20 + 21 + 23 + 29 + 31 + 32 + 33 + 35 + 40 + 41 + 42 + 44 + 46 + 47 + 53 + 58 + 59 + 60 + 64 + 65 + 66 + 71 + 72 + 73 + 75 + 76 + 77 + 81 + 84 + 88 + 89 + 91 + 92 + 93 + 94 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 113 + 115 + 117 + 118 + 119 + 128 + 130 + 131 + 132 + 139 + 140 + 141 + 143 + 144 + 145 + 150 + 151 + 152 + 155 + 156 + 157 + 159 + 162 + 163 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 179 diff --git a/tests_cpp/gradients/samplemesh_s5/connectivity.dat b/tests_cpp/gradients/samplemesh_s5/connectivity.dat new file mode 100644 index 00000000..1a24ac69 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s5/connectivity.dat @@ -0,0 +1,25 @@ + 0 -1 8 1 -1 -1 13 2 -1 + 5 4 11 6 -1 3 18 7 -1 + 7 6 12 -1 -1 5 20 -1 -1 + 17 16 26 18 10 15 33 19 4 + 23 22 32 24 14 21 40 25 9 + 29 28 36 -1 20 27 44 -1 12 + 36 35 44 -1 29 34 54 -1 20 + 40 39 50 41 32 38 57 42 23 + 45 -1 55 46 37 -1 63 47 30 + 49 48 56 50 39 47 65 51 31 + 60 59 70 61 53 58 76 62 43 + 66 65 73 67 57 64 80 68 50 + 68 67 74 69 58 66 81 70 52 + 77 76 84 78 71 75 91 -1 61 + 78 77 85 -1 72 76 92 -1 62 + 85 84 92 -1 78 83 102 -1 72 + 89 88 100 90 82 87 109 91 75 + 93 -1 103 94 86 -1 113 95 79 + 99 98 108 100 88 97 120 101 81 + 103 -1 113 104 93 -1 -1 105 86 + 112 111 123 -1 102 110 -1 -1 92 + 113 -1 -1 114 103 -1 -1 115 93 + 116 115 -1 117 106 114 -1 118 96 + 119 118 -1 120 107 117 -1 121 98 + 120 119 -1 121 108 118 -1 122 99 diff --git a/tests_cpp/gradients/samplemesh_s5/coordinates.dat b/tests_cpp/gradients/samplemesh_s5/coordinates.dat new file mode 100644 index 00000000..a635bc87 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s5/coordinates.dat @@ -0,0 +1,124 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.20833333333333 0.03333333333333 + 3 0.62500000000000 0.03333333333333 + 4 0.70833333333333 0.03333333333333 + 5 0.79166666666667 0.03333333333333 + 6 0.87500000000000 0.03333333333333 + 7 0.95833333333333 0.03333333333333 + 8 0.04166666666667 0.10000000000000 + 9 0.45833333333333 0.10000000000000 + 10 0.70833333333333 0.10000000000000 + 11 0.79166666666667 0.10000000000000 + 12 0.95833333333333 0.10000000000000 + 13 0.04166666666667 0.16666666666667 + 14 0.45833333333333 0.16666666666667 + 15 0.54166666666667 0.16666666666667 + 16 0.62500000000000 0.16666666666667 + 17 0.70833333333333 0.16666666666667 + 18 0.79166666666667 0.16666666666667 + 19 0.87500000000000 0.16666666666667 + 20 0.95833333333333 0.16666666666667 + 21 0.29166666666667 0.23333333333333 + 22 0.37500000000000 0.23333333333333 + 23 0.45833333333333 0.23333333333333 + 24 0.54166666666667 0.23333333333333 + 25 0.62500000000000 0.23333333333333 + 26 0.70833333333333 0.23333333333333 + 27 0.79166666666667 0.23333333333333 + 28 0.87500000000000 0.23333333333333 + 29 0.95833333333333 0.23333333333333 + 30 0.04166666666667 0.30000000000000 + 31 0.37500000000000 0.30000000000000 + 32 0.45833333333333 0.30000000000000 + 33 0.70833333333333 0.30000000000000 + 34 0.79166666666667 0.30000000000000 + 35 0.87500000000000 0.30000000000000 + 36 0.95833333333333 0.30000000000000 + 37 0.04166666666667 0.36666666666667 + 38 0.29166666666667 0.36666666666667 + 39 0.37500000000000 0.36666666666667 + 40 0.45833333333333 0.36666666666667 + 41 0.54166666666667 0.36666666666667 + 42 0.62500000000000 0.36666666666667 + 43 0.79166666666667 0.36666666666667 + 44 0.95833333333333 0.36666666666667 + 45 0.04166666666667 0.43333333333333 + 46 0.12500000000000 0.43333333333333 + 47 0.20833333333333 0.43333333333333 + 48 0.29166666666667 0.43333333333333 + 49 0.37500000000000 0.43333333333333 + 50 0.45833333333333 0.43333333333333 + 51 0.54166666666667 0.43333333333333 + 52 0.62500000000000 0.43333333333333 + 53 0.79166666666667 0.43333333333333 + 54 0.95833333333333 0.43333333333333 + 55 0.04166666666667 0.50000000000000 + 56 0.37500000000000 0.50000000000000 + 57 0.45833333333333 0.50000000000000 + 58 0.62500000000000 0.50000000000000 + 59 0.70833333333333 0.50000000000000 + 60 0.79166666666667 0.50000000000000 + 61 0.87500000000000 0.50000000000000 + 62 0.95833333333333 0.50000000000000 + 63 0.04166666666667 0.56666666666667 + 64 0.29166666666667 0.56666666666667 + 65 0.37500000000000 0.56666666666667 + 66 0.45833333333333 0.56666666666667 + 67 0.54166666666667 0.56666666666667 + 68 0.62500000000000 0.56666666666667 + 69 0.70833333333333 0.56666666666667 + 70 0.79166666666667 0.56666666666667 + 71 0.87500000000000 0.56666666666667 + 72 0.95833333333333 0.56666666666667 + 73 0.45833333333333 0.63333333333333 + 74 0.62500000000000 0.63333333333333 + 75 0.70833333333333 0.63333333333333 + 76 0.79166666666667 0.63333333333333 + 77 0.87500000000000 0.63333333333333 + 78 0.95833333333333 0.63333333333333 + 79 0.04166666666667 0.70000000000000 + 80 0.45833333333333 0.70000000000000 + 81 0.62500000000000 0.70000000000000 + 82 0.70833333333333 0.70000000000000 + 83 0.79166666666667 0.70000000000000 + 84 0.87500000000000 0.70000000000000 + 85 0.95833333333333 0.70000000000000 + 86 0.04166666666667 0.76666666666667 + 87 0.54166666666667 0.76666666666667 + 88 0.62500000000000 0.76666666666667 + 89 0.70833333333333 0.76666666666667 + 90 0.79166666666667 0.76666666666667 + 91 0.87500000000000 0.76666666666667 + 92 0.95833333333333 0.76666666666667 + 93 0.04166666666667 0.83333333333333 + 94 0.12500000000000 0.83333333333333 + 95 0.20833333333333 0.83333333333333 + 96 0.29166666666667 0.83333333333333 + 97 0.45833333333333 0.83333333333333 + 98 0.54166666666667 0.83333333333333 + 99 0.62500000000000 0.83333333333333 + 100 0.70833333333333 0.83333333333333 + 101 0.79166666666667 0.83333333333333 + 102 0.95833333333333 0.83333333333333 + 103 0.04166666666667 0.90000000000000 + 104 0.12500000000000 0.90000000000000 + 105 0.20833333333333 0.90000000000000 + 106 0.29166666666667 0.90000000000000 + 107 0.54166666666667 0.90000000000000 + 108 0.62500000000000 0.90000000000000 + 109 0.70833333333333 0.90000000000000 + 110 0.79166666666667 0.90000000000000 + 111 0.87500000000000 0.90000000000000 + 112 0.95833333333333 0.90000000000000 + 113 0.04166666666667 0.96666666666667 + 114 0.12500000000000 0.96666666666667 + 115 0.20833333333333 0.96666666666667 + 116 0.29166666666667 0.96666666666667 + 117 0.37500000000000 0.96666666666667 + 118 0.45833333333333 0.96666666666667 + 119 0.54166666666667 0.96666666666667 + 120 0.62500000000000 0.96666666666667 + 121 0.70833333333333 0.96666666666667 + 122 0.79166666666667 0.96666666666667 + 123 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/samplemesh_s5/info.dat b/tests_cpp/gradients/samplemesh_s5/info.dat new file mode 100644 index 00000000..4c3b3179 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s5/info.dat @@ -0,0 +1,10 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 25 +stencilMeshSize 124 +stencilSize 5 diff --git a/tests_cpp/gradients/samplemesh_s5/mesh.png b/tests_cpp/gradients/samplemesh_s5/mesh.png new file mode 100644 index 00000000..da8d9015 Binary files /dev/null and b/tests_cpp/gradients/samplemesh_s5/mesh.png differ diff --git a/tests_cpp/gradients/samplemesh_s5/sample_mesh_gids.txt b/tests_cpp/gradients/samplemesh_s5/sample_mesh_gids.txt new file mode 100644 index 00000000..1db15275 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s5/sample_mesh_gids.txt @@ -0,0 +1,25 @@ +0 +9 +11 +32 +41 +47 +59 +65 +72 +76 +93 +101 +103 +118 +119 +131 +140 +144 +151 +156 +167 +168 +171 +174 +175 diff --git a/tests_cpp/gradients/samplemesh_s5/stencil_mesh_gids.dat b/tests_cpp/gradients/samplemesh_s5/stencil_mesh_gids.dat new file mode 100644 index 00000000..ce25edd0 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s5/stencil_mesh_gids.dat @@ -0,0 +1,124 @@ + 0 + 1 + 2 + 7 + 8 + 9 + 10 + 11 + 12 + 17 + 20 + 21 + 23 + 24 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 52 + 53 + 56 + 57 + 58 + 59 + 60 + 63 + 64 + 65 + 66 + 67 + 69 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 81 + 83 + 84 + 88 + 89 + 91 + 92 + 93 + 94 + 95 + 96 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 113 + 115 + 116 + 117 + 118 + 119 + 120 + 125 + 127 + 128 + 129 + 130 + 131 + 132 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 149 + 150 + 151 + 152 + 153 + 155 + 156 + 157 + 158 + 159 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 179 diff --git a/tests_cpp/gradients/samplemesh_s7/connectivity.dat b/tests_cpp/gradients/samplemesh_s7/connectivity.dat new file mode 100644 index 00000000..906c9390 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s7/connectivity.dat @@ -0,0 +1,25 @@ + 0 -1 11 1 -1 -1 16 2 -1 -1 24 3 -1 + 8 7 14 9 -1 6 21 10 -1 5 32 -1 -1 + 10 9 15 -1 -1 8 23 -1 -1 7 34 -1 -1 + 20 19 31 21 13 18 38 22 7 17 49 23 -1 + 28 27 37 29 17 26 46 30 12 25 57 31 4 + 34 33 41 -1 23 32 51 -1 15 31 62 -1 10 + 41 40 51 -1 34 39 62 -1 23 38 71 -1 15 + 46 45 57 47 37 44 65 48 28 43 76 49 17 + 52 -1 63 53 42 -1 72 54 35 -1 83 55 24 + 56 55 64 57 45 54 75 58 36 53 84 59 27 + 69 68 80 70 60 67 88 71 50 66 95 -1 39 + 76 75 85 77 65 74 92 78 57 73 100 79 46 + 78 77 86 79 67 76 93 80 59 75 102 81 48 + 89 88 96 90 81 87 105 -1 70 86 117 -1 61 + 90 89 97 -1 82 88 106 -1 71 87 118 -1 62 + 97 96 106 -1 90 95 118 -1 82 94 128 -1 71 + 103 102 115 104 94 101 125 105 87 100 137 106 79 + 107 -1 119 108 98 -1 129 109 91 -1 -1 110 83 + 114 113 124 115 102 112 136 116 93 111 -1 117 86 + 119 -1 129 120 107 -1 -1 121 98 -1 -1 122 91 + 128 127 140 -1 118 126 -1 -1 106 125 -1 -1 97 + 129 -1 -1 130 119 -1 -1 131 107 -1 -1 132 98 + 132 131 -1 133 122 130 -1 134 110 129 -1 135 99 + 135 134 -1 136 123 133 -1 137 113 132 -1 138 101 + 136 135 -1 137 124 134 -1 138 114 133 -1 139 102 diff --git a/tests_cpp/gradients/samplemesh_s7/coordinates.dat b/tests_cpp/gradients/samplemesh_s7/coordinates.dat new file mode 100644 index 00000000..8eb15c57 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s7/coordinates.dat @@ -0,0 +1,141 @@ + 0 0.04166666666667 0.03333333333333 + 1 0.12500000000000 0.03333333333333 + 2 0.20833333333333 0.03333333333333 + 3 0.29166666666667 0.03333333333333 + 4 0.45833333333333 0.03333333333333 + 5 0.54166666666667 0.03333333333333 + 6 0.62500000000000 0.03333333333333 + 7 0.70833333333333 0.03333333333333 + 8 0.79166666666667 0.03333333333333 + 9 0.87500000000000 0.03333333333333 + 10 0.95833333333333 0.03333333333333 + 11 0.04166666666667 0.10000000000000 + 12 0.45833333333333 0.10000000000000 + 13 0.70833333333333 0.10000000000000 + 14 0.79166666666667 0.10000000000000 + 15 0.95833333333333 0.10000000000000 + 16 0.04166666666667 0.16666666666667 + 17 0.45833333333333 0.16666666666667 + 18 0.54166666666667 0.16666666666667 + 19 0.62500000000000 0.16666666666667 + 20 0.70833333333333 0.16666666666667 + 21 0.79166666666667 0.16666666666667 + 22 0.87500000000000 0.16666666666667 + 23 0.95833333333333 0.16666666666667 + 24 0.04166666666667 0.23333333333333 + 25 0.20833333333333 0.23333333333333 + 26 0.29166666666667 0.23333333333333 + 27 0.37500000000000 0.23333333333333 + 28 0.45833333333333 0.23333333333333 + 29 0.54166666666667 0.23333333333333 + 30 0.62500000000000 0.23333333333333 + 31 0.70833333333333 0.23333333333333 + 32 0.79166666666667 0.23333333333333 + 33 0.87500000000000 0.23333333333333 + 34 0.95833333333333 0.23333333333333 + 35 0.04166666666667 0.30000000000000 + 36 0.37500000000000 0.30000000000000 + 37 0.45833333333333 0.30000000000000 + 38 0.70833333333333 0.30000000000000 + 39 0.79166666666667 0.30000000000000 + 40 0.87500000000000 0.30000000000000 + 41 0.95833333333333 0.30000000000000 + 42 0.04166666666667 0.36666666666667 + 43 0.20833333333333 0.36666666666667 + 44 0.29166666666667 0.36666666666667 + 45 0.37500000000000 0.36666666666667 + 46 0.45833333333333 0.36666666666667 + 47 0.54166666666667 0.36666666666667 + 48 0.62500000000000 0.36666666666667 + 49 0.70833333333333 0.36666666666667 + 50 0.79166666666667 0.36666666666667 + 51 0.95833333333333 0.36666666666667 + 52 0.04166666666667 0.43333333333333 + 53 0.12500000000000 0.43333333333333 + 54 0.20833333333333 0.43333333333333 + 55 0.29166666666667 0.43333333333333 + 56 0.37500000000000 0.43333333333333 + 57 0.45833333333333 0.43333333333333 + 58 0.54166666666667 0.43333333333333 + 59 0.62500000000000 0.43333333333333 + 60 0.79166666666667 0.43333333333333 + 61 0.87500000000000 0.43333333333333 + 62 0.95833333333333 0.43333333333333 + 63 0.04166666666667 0.50000000000000 + 64 0.37500000000000 0.50000000000000 + 65 0.45833333333333 0.50000000000000 + 66 0.54166666666667 0.50000000000000 + 67 0.62500000000000 0.50000000000000 + 68 0.70833333333333 0.50000000000000 + 69 0.79166666666667 0.50000000000000 + 70 0.87500000000000 0.50000000000000 + 71 0.95833333333333 0.50000000000000 + 72 0.04166666666667 0.56666666666667 + 73 0.20833333333333 0.56666666666667 + 74 0.29166666666667 0.56666666666667 + 75 0.37500000000000 0.56666666666667 + 76 0.45833333333333 0.56666666666667 + 77 0.54166666666667 0.56666666666667 + 78 0.62500000000000 0.56666666666667 + 79 0.70833333333333 0.56666666666667 + 80 0.79166666666667 0.56666666666667 + 81 0.87500000000000 0.56666666666667 + 82 0.95833333333333 0.56666666666667 + 83 0.04166666666667 0.63333333333333 + 84 0.37500000000000 0.63333333333333 + 85 0.45833333333333 0.63333333333333 + 86 0.62500000000000 0.63333333333333 + 87 0.70833333333333 0.63333333333333 + 88 0.79166666666667 0.63333333333333 + 89 0.87500000000000 0.63333333333333 + 90 0.95833333333333 0.63333333333333 + 91 0.04166666666667 0.70000000000000 + 92 0.45833333333333 0.70000000000000 + 93 0.62500000000000 0.70000000000000 + 94 0.70833333333333 0.70000000000000 + 95 0.79166666666667 0.70000000000000 + 96 0.87500000000000 0.70000000000000 + 97 0.95833333333333 0.70000000000000 + 98 0.04166666666667 0.76666666666667 + 99 0.29166666666667 0.76666666666667 + 100 0.45833333333333 0.76666666666667 + 101 0.54166666666667 0.76666666666667 + 102 0.62500000000000 0.76666666666667 + 103 0.70833333333333 0.76666666666667 + 104 0.79166666666667 0.76666666666667 + 105 0.87500000000000 0.76666666666667 + 106 0.95833333333333 0.76666666666667 + 107 0.04166666666667 0.83333333333333 + 108 0.12500000000000 0.83333333333333 + 109 0.20833333333333 0.83333333333333 + 110 0.29166666666667 0.83333333333333 + 111 0.37500000000000 0.83333333333333 + 112 0.45833333333333 0.83333333333333 + 113 0.54166666666667 0.83333333333333 + 114 0.62500000000000 0.83333333333333 + 115 0.70833333333333 0.83333333333333 + 116 0.79166666666667 0.83333333333333 + 117 0.87500000000000 0.83333333333333 + 118 0.95833333333333 0.83333333333333 + 119 0.04166666666667 0.90000000000000 + 120 0.12500000000000 0.90000000000000 + 121 0.20833333333333 0.90000000000000 + 122 0.29166666666667 0.90000000000000 + 123 0.54166666666667 0.90000000000000 + 124 0.62500000000000 0.90000000000000 + 125 0.70833333333333 0.90000000000000 + 126 0.79166666666667 0.90000000000000 + 127 0.87500000000000 0.90000000000000 + 128 0.95833333333333 0.90000000000000 + 129 0.04166666666667 0.96666666666667 + 130 0.12500000000000 0.96666666666667 + 131 0.20833333333333 0.96666666666667 + 132 0.29166666666667 0.96666666666667 + 133 0.37500000000000 0.96666666666667 + 134 0.45833333333333 0.96666666666667 + 135 0.54166666666667 0.96666666666667 + 136 0.62500000000000 0.96666666666667 + 137 0.70833333333333 0.96666666666667 + 138 0.79166666666667 0.96666666666667 + 139 0.87500000000000 0.96666666666667 + 140 0.95833333333333 0.96666666666667 diff --git a/tests_cpp/gradients/samplemesh_s7/info.dat b/tests_cpp/gradients/samplemesh_s7/info.dat new file mode 100644 index 00000000..4455de23 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s7/info.dat @@ -0,0 +1,10 @@ +dim 2 +xMin 0.00000000000000 +xMax 1.00000000000000 +yMin 0.00000000000000 +yMax 1.00000000000000 +dx 0.08333333333333 +dy 0.06666666666667 +sampleMeshSize 25 +stencilMeshSize 141 +stencilSize 7 diff --git a/tests_cpp/gradients/samplemesh_s7/mesh.png b/tests_cpp/gradients/samplemesh_s7/mesh.png new file mode 100644 index 00000000..33699746 Binary files /dev/null and b/tests_cpp/gradients/samplemesh_s7/mesh.png differ diff --git a/tests_cpp/gradients/samplemesh_s7/sample_mesh_gids.txt b/tests_cpp/gradients/samplemesh_s7/sample_mesh_gids.txt new file mode 100644 index 00000000..1db15275 --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s7/sample_mesh_gids.txt @@ -0,0 +1,25 @@ +0 +9 +11 +32 +41 +47 +59 +65 +72 +76 +93 +101 +103 +118 +119 +131 +140 +144 +151 +156 +167 +168 +171 +174 +175 diff --git a/tests_cpp/gradients/samplemesh_s7/stencil_mesh_gids.dat b/tests_cpp/gradients/samplemesh_s7/stencil_mesh_gids.dat new file mode 100644 index 00000000..126a284f --- /dev/null +++ b/tests_cpp/gradients/samplemesh_s7/stencil_mesh_gids.dat @@ -0,0 +1,141 @@ + 0 + 1 + 2 + 3 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 17 + 20 + 21 + 23 + 24 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 52 + 53 + 56 + 57 + 58 + 59 + 60 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 81 + 82 + 83 + 84 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 112 + 113 + 115 + 116 + 117 + 118 + 119 + 120 + 125 + 127 + 128 + 129 + 130 + 131 + 132 + 135 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179