From dfd5d69ff01fed6797f0edee3ffbb01c2e6e63a4 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Wed, 26 Feb 2014 18:17:42 +0100 Subject: [PATCH] Setting up files and directories for in-situ classes. Started implementing mesh node coordinates wrapper. Conflicts: CMakeLists.txt --- CMakeLists.txt | 1 + InSituLib/CMakeLists.txt | 5 +++ InSituLib/VtkMeshNodalCoordinatesTemplate.h | 38 +++++++++++++++++ InSituLib/VtkMeshNodalCoordinatesTemplate.txx | 41 +++++++++++++++++++ Tests/CMakeLists.txt | 5 +++ .../TestVtkMeshNodalCoordinatesTemplate.cpp | 32 +++++++++++++++ 6 files changed, 122 insertions(+) create mode 100644 InSituLib/CMakeLists.txt create mode 100644 InSituLib/VtkMeshNodalCoordinatesTemplate.h create mode 100644 InSituLib/VtkMeshNodalCoordinatesTemplate.txx create mode 100644 Tests/InSituLib/TestVtkMeshNodalCoordinatesTemplate.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4459f06610f..5d9e912f2e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,7 @@ IF(TARGET Boost) ENDIF() ADD_SUBDIRECTORY( FileIO ) ADD_SUBDIRECTORY( GeoLib ) +ADD_SUBDIRECTORY( InSituLib ) ADD_SUBDIRECTORY( MathLib ) ADD_SUBDIRECTORY( MeshLib ) ADD_SUBDIRECTORY( MeshGeoToolsLib ) diff --git a/InSituLib/CMakeLists.txt b/InSituLib/CMakeLists.txt new file mode 100644 index 00000000000..5a8874f6ba3 --- /dev/null +++ b/InSituLib/CMakeLists.txt @@ -0,0 +1,5 @@ +#ADD_LIBRARY(InSituLib +# VtkMeshNodalCoordinatesTemplate.txx +#) + +#ADD_DEPENDENCIES(InSituLib STATIC VtkRescan) diff --git a/InSituLib/VtkMeshNodalCoordinatesTemplate.h b/InSituLib/VtkMeshNodalCoordinatesTemplate.h new file mode 100644 index 00000000000..cb0edd32b05 --- /dev/null +++ b/InSituLib/VtkMeshNodalCoordinatesTemplate.h @@ -0,0 +1,38 @@ +/** + * \file + * \author Lars Bilke + * \date 2014-02-26 + * \brief Definition of the ElementStatus class. + * + * \copyright + * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#ifndef VTKMESHNODALCOORDINATES_H_ +#define VTKMESHNODALCOORDINATES_H_ + +#include <vtkMappedDataArray.h> +#include <vtkTypeTemplate.h> // For templated vtkObject API +#include <vtkObjectFactory.h> // for vtkStandardNewMacro + +template <class Scalar> +class VtkMeshNodalCoordinatesTemplate: + public vtkTypeTemplate<VtkMeshNodalCoordinatesTemplate<Scalar>, + vtkMappedDataArray<Scalar> > +{ +public: + vtkMappedDataArrayNewInstanceMacro( + VtkMeshNodalCoordinatesTemplate<Scalar>) + static VtkMeshNodalCoordinatesTemplate *New(); + virtual void PrintSelf(ostream &os, vtkIndent indent); + + void SetNodes(std::vector<MeshLib::Node*> const & nodes); +}; + +#include "VtkMeshNodalCoordinatesTemplate.txx" + +#endif // VTKMESHNODALCOORDINATES_H_ diff --git a/InSituLib/VtkMeshNodalCoordinatesTemplate.txx b/InSituLib/VtkMeshNodalCoordinatesTemplate.txx new file mode 100644 index 00000000000..5cfe641d26d --- /dev/null +++ b/InSituLib/VtkMeshNodalCoordinatesTemplate.txx @@ -0,0 +1,41 @@ +/** + * \file + * \author Lars Bilke + * \date 2014-02-26 + * \brief Definition of the ElementStatus class. + * + * \copyright + * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#include "VtkMeshNodalCoordinatesTemplate.h" + +#include <vtkIdList.h> +#include <vtkObjectFactory.h> +#include <vtkVariant.h> +#include <vtkVariantCast.h> + +//------------------------------------------------------------------------------ +// Can't use vtkStandardNewMacro with a template. +template <class Scalar> VtkMeshNodalCoordinatesTemplate<Scalar> * +VtkMeshNodalCoordinatesTemplate<Scalar>::New() +{ + VTK_STANDARD_NEW_BODY(VtkMeshNodalCoordinatesTemplate<Scalar>) +} + +//------------------------------------------------------------------------------ +template <class Scalar> void VtkMeshNodalCoordinatesTemplate<Scalar> +::PrintSelf(ostream &os, vtkIndent indent) +{ + this->VtkMeshNodalCoordinatesTemplate<Scalar>::Superclass::PrintSelf( + os, indent); + os << indent << "Blub" << std::endl; + //os << indent << "XArray: " << this->XArray << std::endl; + //os << indent << "YArray: " << this->YArray << std::endl; + //os << indent << "ZArray: " << this->ZArray << std::endl; + //os << indent << "TempDoubleArray: " << this->TempDoubleArray << std::endl; +} diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index c398d1ec773..f161aae06aa 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -16,6 +16,11 @@ IF (QT4_FOUND) APPEND_SOURCE_FILES(TEST_SOURCES FileIO) ENDIF() +IF (OGS_BUILD_GUI) + APPEND_SOURCE_FILES(TEST_SOURCES InSituLib) + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/InSituLib) +ENDIF() + INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/AssemblerLib ${CMAKE_SOURCE_DIR}/BaseLib diff --git a/Tests/InSituLib/TestVtkMeshNodalCoordinatesTemplate.cpp b/Tests/InSituLib/TestVtkMeshNodalCoordinatesTemplate.cpp new file mode 100644 index 00000000000..8f3254525ab --- /dev/null +++ b/Tests/InSituLib/TestVtkMeshNodalCoordinatesTemplate.cpp @@ -0,0 +1,32 @@ +/** + * \file + * \author Lars Bilke + * \date 2014-02-26 + * \brief Unit tests for In-Situ mesh nodes + * + * \copyright + * Copyright (c) 2013, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ +#include <vtkNew.h> + +#include "gtest/gtest.h" + +#include "Mesh.h" +#include "MeshGenerators/MeshGenerator.h" + +#include "VtkMeshNodalCoordinatesTemplate.h" + +TEST(InSituLibNodalCoordinates, Init) +{ + MeshLib::Mesh* mesh = MeshLib::MeshGenerator::generateRegularQuadMesh(10.0, 99); + + vtkNew<VtkMeshNodalCoordinatesTemplate<double> > nodeCoords; + nodeCoords->SetNodes(mesh->getNodes()); + nodeCoords->PrintSelf(std::cout, vtkIndent()); + + delete mesh; +} -- GitLab