Skip to content
Snippets Groups Projects
test0003.cc 1.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • #define BOOST_TEST_DYN_LINK
    #define BOOST_TEST_MODULE 0002
    #define BOOST_TEST_NO_MAIN
    
    #include <boost/test/unit_test.hpp>
    #include <AMDiS.h>
    
    using namespace AMDiS;
    using namespace std;
    
    /*
      - 
    */
    
    BOOST_AUTO_TEST_CASE(amdis_mpi_feti_multilevel)
    {
      BOOST_REQUIRE(MPI::COMM_WORLD.Get_size() == 16);
    
      ProblemStat ellipt("ellipt");
      ellipt.initialize(INIT_ALL);
    
      MeshDistributor *meshDist = MeshDistributor::globalMeshDistributor;
      meshDist->initParallelization();
    
      Mesh* mesh = ellipt.getMesh();
      BOOST_REQUIRE(mesh->getNumberOfLeaves() == 8);
      BOOST_REQUIRE(meshDist->getMeshLevelData().getLevelNumber() == 2);
    
      vector<const FiniteElemSpace*> feSpaces;
      feSpaces.push_back(ellipt.getFeSpace(0));
    
      PetscSolverFeti &feti = *(dynamic_cast<PetscSolverFeti*>(ellipt.getPetscSolver()));
      feti.setMeshDistributor(meshDist);
      feti.initialize(feSpaces);
      feti.createFetiData();
    
      BOOST_REQUIRE(feti.getNumberOfPrimals() == 9);
      BOOST_REQUIRE(feti.getNumberOfDuals() == 16);
    }
    
    
    int main(int argc, char **argv)
    {
      AMDiS::init(argc, argv, "./init/test0003.dat.2d");
    
      boost::unit_test::unit_test_main(&init_unit_test, argc, argv);
    
      AMDiS::finalize();
    }