diff --git a/src/TNL/Functions/BoundaryMeshFunction.h b/src/TNL/Functions/BoundaryMeshFunction.h new file mode 100644 index 0000000000000000000000000000000000000000..b91b87bbbea693e13187272d6a7ff10a8c509b99 --- /dev/null +++ b/src/TNL/Functions/BoundaryMeshFunction.h @@ -0,0 +1,47 @@ +/*************************************************************************** + BoundaryMeshFunction.h - description + ------------------- + begin : Aug 21, 2018 + copyright : (C) 2018 by oberhuber + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#pragma once + +#include <TNL/Functions/MeshFunction.h> + +namespace TNL { +namespace Functions { + + +// BoundaryMeshFunction is supposed to store values of a mesh functions only +// at boundary mesh entities. It is just a small memory optimization. +// Currently, it is only a wrap around common MeshFunction so that we can introduce +// boundary mesh functions in the rest of the code. +// TODO: Implement it. +template< typename Mesh, + int MeshEntityDimension = Mesh::getMeshDimension(), + typename Real = typename Mesh::RealType > +class BoundaryMeshFunction : + public MeshFunction< Mesh, MeshEntityDimension, Real > +{ + public: + + using BaseType = MeshFunction< Mesh, MeshEntityDimension, Real >; + using ThisType = BoundaryMeshFunction< Mesh, MeshEntityDimension, Real >; + using typename BaseType::MeshType; + using typename BaseType::DeviceType; + using typename BaseType::IndexType; + using typename BaseType::MeshPointer; + using typename BaseType::RealType; + using typename BaseType::VectorType; + using typename BaseType::DistributedMeshType; + using typename BaseType::DistributedMeshSynchronizerType; + + +}; + +} // namespace Functions +} // namespace TNL diff --git a/src/TNL/Functions/CMakeLists.txt b/src/TNL/Functions/CMakeLists.txt index 2c51f3beb5020eb00567cc789186c7674efd70ad..828720eb2e98718fa2e785c9023e0afd3d58af35 100644 --- a/src/TNL/Functions/CMakeLists.txt +++ b/src/TNL/Functions/CMakeLists.txt @@ -1,6 +1,7 @@ ADD_SUBDIRECTORY( Analytic ) -SET( headers Domain.h +SET( headers BoundaryMeshFunction.h + Domain.h ExactOperatorFunction.h FunctionAdapter.h MeshFunction.h diff --git a/src/UnitTests/Functions/BoundaryMeshFunctionTest.cpp b/src/UnitTests/Functions/BoundaryMeshFunctionTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b1b0d86338fa0b697333e338b6e1a95fc225a54e --- /dev/null +++ b/src/UnitTests/Functions/BoundaryMeshFunctionTest.cpp @@ -0,0 +1,11 @@ +/*************************************************************************** + BoundaryMeshFunctionTest.cpp - description + ------------------- + begin : Aug 21, 2018 + copyright : (C) 2018 by oberhuber + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#include "BoundaryMeshFunctionTest.h" \ No newline at end of file diff --git a/src/UnitTests/Functions/BoundaryMeshFunctionTest.cu b/src/UnitTests/Functions/BoundaryMeshFunctionTest.cu new file mode 100644 index 0000000000000000000000000000000000000000..9558078a7aee9e17912dc9d7316646e4a191b2cd --- /dev/null +++ b/src/UnitTests/Functions/BoundaryMeshFunctionTest.cu @@ -0,0 +1,11 @@ +/*************************************************************************** + BoundaryMeshFunctionTest.cu - description + ------------------- + begin : Aug 21, 2018 + copyright : (C) 2018 by oberhuber + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#include "BoundaryMeshFunctionTest.h" \ No newline at end of file diff --git a/src/UnitTests/Functions/BoundaryMeshFunctionTest.h b/src/UnitTests/Functions/BoundaryMeshFunctionTest.h new file mode 100644 index 0000000000000000000000000000000000000000..bab8bf5afbac9fa4f4c62d0a42f64facfeb72c12 --- /dev/null +++ b/src/UnitTests/Functions/BoundaryMeshFunctionTest.h @@ -0,0 +1,37 @@ +/*************************************************************************** + BoundaryMeshFunctionTest.h - description + ------------------- + begin : Aug 21, 2018 + copyright : (C) 2018 by oberhuber + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/* See Copyright Notice in tnl/Copyright */ + +#pragma once + +#include "../GtestMissingError.h" + +#ifdef HAVE_GTEST +#include <gtest/gtest.h> +#include <TNL/Functions/BoundaryMeshFunction.h> +#include <TNL/Meshes/Grid.h> + +TEST( BoundaryMeshFunctionTest, BasicConstructor ) +{ + using Grid = TNL::Meshes::Grid< 2 >; + TNL::Functions::BoundaryMeshFunction< Grid > boundaryMesh; +} + +#endif + + +int main( int argc, char* argv[] ) +{ +#ifdef HAVE_GTEST + ::testing::InitGoogleTest( &argc, argv ); + return RUN_ALL_TESTS(); +#else + throw GtestMissingError(); +#endif +} diff --git a/src/UnitTests/Functions/CMakeLists.txt b/src/UnitTests/Functions/CMakeLists.txt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9641a5b329ea3069f4edc6e0c0664eedb4aa94e2 100644 --- a/src/UnitTests/Functions/CMakeLists.txt +++ b/src/UnitTests/Functions/CMakeLists.txt @@ -0,0 +1,13 @@ +IF( BUILD_CUDA ) + CUDA_ADD_EXECUTABLE( BoundaryMeshFunctionTest BoundaryMeshFunctionTest.h BoundaryMeshFunctionTest.cu OPTIONS ${CXX_TESTS_FLAGS} ) + TARGET_LINK_LIBRARIES( BoundaryMeshFunctionTest ${GTEST_BOTH_LIBRARIES} + tnl ) +ELSE( BUILD_CUDA ) + ADD_EXECUTABLE( BoundaryMeshFunctionTest BoundaryMeshFunctionTest.h BoundaryMeshFunctionTest.cpp ) + TARGET_COMPILE_OPTIONS( BoundaryMeshFunctionTest PRIVATE ${CXX_TESTS_FLAGS} ) + TARGET_LINK_LIBRARIES( BoundaryMeshFunctionTest ${GTEST_BOTH_LIBRARIES} + tnl ) +ENDIF( BUILD_CUDA ) + + +ADD_TEST( BoundaryMeshFunctionTest ${EXECUTABLE_OUTPUT_PATH}/BoundaryMeshFunctionTest${CMAKE_EXECUTABLE_SUFFIX} ) \ No newline at end of file