From 979106b85c02fdae1408e350d13fc5d114f4e68e Mon Sep 17 00:00:00 2001 From: Andreas Naumann <andreas.naumann@tu-dresden.de> Date: Wed, 1 Dec 2010 20:08:19 +0000 Subject: [PATCH] enabled out-of-source builds and cannot load simple meshes. See meshtest --- AMDiS/CMakeLists.txt | 29 ++++++++++----------- AMDiS/test/CMakeLists.txt | 3 ++- AMDiS/test/Meshtest/CMakeLists.txt | 4 +++ AMDiS/test/Meshtest/src/Meshtest.cpp | 26 +++++++++++++++++++ AMDiS/test/demotest/CMakeLists.txt | 7 +++-- AMDiS/test/demotest/src/Comparer.cpp | 38 +++++++++++++++++++++++++--- 6 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 AMDiS/test/Meshtest/CMakeLists.txt create mode 100644 AMDiS/test/Meshtest/src/Meshtest.cpp diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt index 889e6d90..2721f936 100644 --- a/AMDiS/CMakeLists.txt +++ b/AMDiS/CMakeLists.txt @@ -2,11 +2,10 @@ project(AMDiS) cmake_minimum_required(VERSION 2.8) -set(AMDiS_SOURCE_DIR "${AMDiS_SOURCE_DIR}/src") #needs: --enable-debug, enable-intel --enable-openmp --enable-parmetis --enable-parallel-domain --enable-umfpack --enable-mkl --enable-boost --enable-marmot -SET(LIB_DIR ./lib) -SET(SOURCE_DIR ${AMDiS_SOURCE_DIR}) +SET(LIB_DIR ${AMDiS_SOURCE_DIR}/lib) +SET(SOURCE_DIR ${AMDiS_SOURCE_DIR}/src) #TODO: use the cmake build type SET(MTL_DIR ${LIB_DIR}/mtl4/ CACHE PATH "mtl4 directory") @@ -50,8 +49,6 @@ if(Boost_FOUND) link_directories(${Boost_LIBRARY_DIRS}) endif(Boost_FOUND) -SET(LIB_DIR ./lib) -SET(SOURCE_DIR ${AMDiS_SOURCE_DIR}) SET(AMDIS_SRC ${SOURCE_DIR}/DOFIndexed.cc ${SOURCE_DIR}/io/GNUPlotWriter.cc ${SOURCE_DIR}/VertexVector.cc @@ -268,39 +265,39 @@ endif(ENABLE_MARMOT) install(TARGETS amdis compositeFEM LIBRARY DESTINATION lib/amdis/ ) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/*.h") +FILE(GLOB HEADERS "${SOURCE_DIR}/*.h") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/*.hh") +FILE(GLOB HEADERS "${SOURCE_DIR}/*.hh") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/parallel/*.h") +FILE(GLOB HEADERS "${SOURCE_DIR}/parallel/*.h") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/parallel/) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/time/*.h") +FILE(GLOB HEADERS "${SOURCE_DIR}/time/*.h") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/time/) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/itl/*.hpp") +FILE(GLOB HEADERS "${SOURCE_DIR}/itl/*.hpp") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/itl) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/io/*.h") +FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.h") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/io) -FILE(GLOB HEADERS "${AMDiS_SOURCE_DIR}/io/*.hh") +FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.hh") INSTALL(FILES ${HEADERS} DESTINATION include/amdis/io) -configure_file(${AMDiS_BINARY_DIR}/AMDiSConfig.cmake.in +configure_file(${AMDiS_SOURCE_DIR}/AMDiSConfig.cmake.in ${AMDiS_BINARY_DIR}/AMDiSConfig.cmake @ONLY ) INSTALL(FILES ${AMDiS_BINARY_DIR}/AMDiSConfig.cmake DESTINATION share/amdis/) -INSTALL(FILES ${AMDiS_BINARY_DIR}/AMDiSUse.cmake +INSTALL(FILES ${AMDiS_SOURCE_DIR}/AMDiSUse.cmake DESTINATION share/amdis/) #install mtl -INSTALL(DIRECTORY ${CMAKE_BINARY_DIR}/lib/mtl4/ +INSTALL(DIRECTORY ${AMDiS_SOURCE_DIR}/lib/mtl4/ DESTINATION include/amdis/mtl4/ FILES_MATCHING PATTERN "*.hpp" PATTERN ".svn" EXCLUDE @@ -313,7 +310,7 @@ INSTALL(DIRECTORY ${CMAKE_BINARY_DIR}/lib/mtl4/ #let cmake look for the svn-version find_package(Subversion) if(Subversion_FOUND) - Subversion_WC_INFO(${CMAKE_CURRENT_BINARY_DIR} mtlSubinfo) + Subversion_WC_INFO(${AMDiS_SOURCE_DIR} mtlSubinfo) set(CurrentRevision ${mtlSubinfo_WC_REVISION}) # message("current revision: ${mtlSubinfo_WC_REVISION}") else(Subversion_FOUND) diff --git a/AMDiS/test/CMakeLists.txt b/AMDiS/test/CMakeLists.txt index 8a78070a..93b2cbba 100644 --- a/AMDiS/test/CMakeLists.txt +++ b/AMDiS/test/CMakeLists.txt @@ -1,4 +1,5 @@ project(tests) +add_subdirectory(Meshtest) add_subdirectory(demoimpl) -add_subdirectory(demotest) +add_subdirectory(demotest EXCLUDE_FROM_ALL) add_subdirectory(datacreation EXCLUDE_FROM_ALL) diff --git a/AMDiS/test/Meshtest/CMakeLists.txt b/AMDiS/test/Meshtest/CMakeLists.txt new file mode 100644 index 00000000..68ed30b6 --- /dev/null +++ b/AMDiS/test/Meshtest/CMakeLists.txt @@ -0,0 +1,4 @@ +project(Meshtest) + add_executable(Meshtest src/Meshtest.cpp) + target_link_libraries(Meshtest ${AMDiS_LIBS}) + add_test(Meshtest Meshtest) diff --git a/AMDiS/test/Meshtest/src/Meshtest.cpp b/AMDiS/test/Meshtest/src/Meshtest.cpp new file mode 100644 index 00000000..00024a70 --- /dev/null +++ b/AMDiS/test/Meshtest/src/Meshtest.cpp @@ -0,0 +1,26 @@ +#include "Mesh.h" +#include "Parameters.h" + +using namespace AMDiS; +int main(int argc, char** argv) { + FUNCNAME("no function"); + //cannot use Parameters::addGlobalParameter(...) because of some string errors +// ADD_PARAMETER(1,"dimension of world","1"); +// ADD_PARAMETER(1,"testMesh1->macro file name","macro/macro.stand.1d"); +// ADD_PARAMETER(1,"testMesh2->macro file name","macro/macro.stand.2d"); +// ADD_PARAMETER(1,"testMesh3->macro file name","macro/macro.stand.3d"); + + Parameters::init(1,"init/ball.dat.2d"); + + Global::init(); + + Mesh mesh1("ballMesh",2); + Mesh mesh2("testMesh1",2); + Mesh mesh3("testMesh1",3); + + mesh1.initialize(); + mesh2.initialize(); + mesh3.initialize(); + return 0; +} + diff --git a/AMDiS/test/demotest/CMakeLists.txt b/AMDiS/test/demotest/CMakeLists.txt index 7bc4fe65..f1021f79 100644 --- a/AMDiS/test/demotest/CMakeLists.txt +++ b/AMDiS/test/demotest/CMakeLists.txt @@ -1,6 +1,8 @@ project(demotest) + ENABLE_TESTING() include_directories(${AMDiS_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src) + add_library(comparer src/Comparer.cpp) file(GLOB PROJECTFILES ${CMAKE_CURRENT_SOURCE_DIR}/../demoimpl/src/*Project.cpp) foreach(projectfile ${PROJECTFILES}) #create creatorname @@ -11,12 +13,13 @@ project(demotest) string(TOLOWER "${creatorsuffix}" creatorsuffix_lower) set(BASENAME "${creatorsuffix_lower}") configure_file(src/tester_base.cpp src/tester${creatorsuffix}.cpp @ONLY) - add_executable(tester${creatorsuffix} src/tester${creatorsuffix}.cpp src/Comparer.cpp) - target_link_libraries(tester${creatorsuffix} ${AMDiS_LIBS} demoimpl) + add_executable(tester${creatorsuffix} src/tester${creatorsuffix}.cpp) + target_link_libraries(tester${creatorsuffix} ${AMDiS_LIBS} demoimpl comparer) file(GLOB initfiles RELATIVE ${CMAKE_CURRENT_BINARY_DIR} init/${creatorsuffix_lower}*.dat*) foreach(initfile ${initfiles}) get_filename_component(initfile_ext ${initfile} EXT) string(REPLACE ".dat." "" initfile_ext "${initfile_ext}") set(curoutputdatafile "../testdata/${creatorsuffix_lower}_${initfile_ext}.arh") + add_test(${creatorsuffix}_${initfile_ext}_Test tester${creatorsuffix} ${initfile} ${curoutputdatafile}) endforeach(initfile) endforeach(projectfile) diff --git a/AMDiS/test/demotest/src/Comparer.cpp b/AMDiS/test/demotest/src/Comparer.cpp index 84983f83..6b20caa6 100644 --- a/AMDiS/test/demotest/src/Comparer.cpp +++ b/AMDiS/test/demotest/src/Comparer.cpp @@ -1,15 +1,45 @@ #include "Project.h" #include "io/ArhReader.h" +#include "MeshStructure.h" +#include "Global.h" + +bool operator==(DOFVector< double >& l, DOFVector< double >& r) +{ + if(l.getUsedSize() != r.getUsedSize()) + return false; + DOFIterator< double > lit(&l, USED_DOFS); + DOFIterator< double > rit(&r, USED_DOFS); + lit.reset(); + rit.reset(); + + while(!lit.end()) { + if(abs(*lit - *rit)>1e-12) + return false; + ++lit; + ++rit; + } + return true; +} + bool compare(SolutionInformation& info, std::string filename) { if(info.sysVec != NULL) { assert(false); }else if(info.dofVec != NULL) { - DOFVector< double > fileVec(info.dofVec->getFeSpace(), "fileVec"); - Mesh fileMesh("",2); - fileMesh = *(info.dofVec->getFeSpace()->getMesh()); - ArhReader::read(filename, &fileMesh, &fileVec); + DOFVector< double > filevec(info.dofVec->getFeSpace(), "fileVec"); + Mesh* solMesh=info.dofVec->getFeSpace()->getMesh(); + std::cout<<"initing swap mesh with name "<<solMesh->getName()<<"\n"; + std::cout<<"swap dimension: "<<solMesh->getDim()<<"\n"; + Mesh fileMesh(solMesh->getName(),solMesh->getDim()); + fileMesh.initialize(); + std::cout<<"reading mesh from file "<<filename<<"\n"; + ArhReader::read(filename, &fileMesh, &filevec); DOFVector< double > nsolvec(*(info.dofVec)); + MeshStructure nsolvestructure; + nsolvestructure.init(solMesh); + MeshStructure filestructure; + filestructure.init(&fileMesh); + return nsolvec == filevec && nsolvestructure.compare(filestructure); }else assert(false); return false; -- GitLab