From 8cce62bbcb65c130e61e50a8d0eb5cc2f3ac9526 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Fri, 13 Apr 2012 10:38:53 +0000 Subject: [PATCH] Just some small changes. --- AMDiS/src/AMDiS.cc | 10 ++++-- AMDiS/src/AMDiS.h | 4 +-- AMDiS/src/parallel/MeshDistributor.h | 7 +++- AMDiS/src/parallel/MeshLevelData.cc | 48 +++++++++++++++++++++++----- AMDiS/src/parallel/MeshLevelData.h | 19 ++++++++++- 5 files changed, 73 insertions(+), 15 deletions(-) diff --git a/AMDiS/src/AMDiS.cc b/AMDiS/src/AMDiS.cc index 1da66eb4..1343b757 100644 --- a/AMDiS/src/AMDiS.cc +++ b/AMDiS/src/AMDiS.cc @@ -24,7 +24,7 @@ namespace AMDiS { mtl::par::environment* mtl_environment=NULL; #endif - void init(int argc, char **argv) + void init(int argc, char **argv, std::string initFileName) { FUNCNAME("AMDiS::init()"); @@ -42,9 +42,13 @@ namespace AMDiS { #endif #endif - TEST_EXIT(argc >= 2)("No init file!\n"); + if (initFileName == "") { + TEST_EXIT(argc >= 2)("No init file!\n"); + Parameters::init(string(argv[1])); + } else { + Parameters::init(initFileName); + } - Parameters::init(string(argv[1])); Parameters::readArgv(argc, argv); } diff --git a/AMDiS/src/AMDiS.h b/AMDiS/src/AMDiS.h index 402ca5fe..dc878e1d 100644 --- a/AMDiS/src/AMDiS.h +++ b/AMDiS/src/AMDiS.h @@ -153,8 +153,8 @@ namespace AMDiS { - void init(int argc, char **argv); - + void init(int argc, char **argv, std::string initFileName = ""); + void init(std::string initFileName); void finalize(); diff --git a/AMDiS/src/parallel/MeshDistributor.h b/AMDiS/src/parallel/MeshDistributor.h index f762a8ee..a4de458d 100644 --- a/AMDiS/src/parallel/MeshDistributor.h +++ b/AMDiS/src/parallel/MeshDistributor.h @@ -451,7 +451,12 @@ namespace AMDiS { /// Adds a stationary problem to the global mesh distributor objects. static void addProblemStatGlobal(ProblemStatSeq *probStat); - + + MeshLevelData& getMeshLevelData() + { + return levelData; + } + protected: void addProblemStat(ProblemStatSeq *probStat); diff --git a/AMDiS/src/parallel/MeshLevelData.cc b/AMDiS/src/parallel/MeshLevelData.cc index 7df797ef..3f84bfdb 100644 --- a/AMDiS/src/parallel/MeshLevelData.cc +++ b/AMDiS/src/parallel/MeshLevelData.cc @@ -10,6 +10,7 @@ // See also license.opensource.txt in the distribution. +#include <boost/lexical_cast.hpp> #include "parallel/MeshLevelData.h" #include "Global.h" @@ -24,8 +25,8 @@ namespace AMDiS { levelRanks[0].insert(-1); nLevel = 1; - levelNeighbour.resize(1); - levelNeighbour[0] = neighbourRanks; + levelNeighbours.resize(1); + levelNeighbours[0] = neighbourRanks; } @@ -39,13 +40,13 @@ namespace AMDiS { levelRanks.insert(levelRanks.begin(), ranksInDomain); nLevel++; - levelNeighbour.resize(2); - levelNeighbour[1] = levelNeighbour[0]; - levelNeighbour[0].clear(); - for (std::set<int>::iterator it = levelNeighbour[1].begin(); - it != levelNeighbour[1].end(); ++it) + levelNeighbours.resize(2); + levelNeighbours[1] = levelNeighbours[0]; + levelNeighbours[0].clear(); + for (std::set<int>::iterator it = levelNeighbours[1].begin(); + it != levelNeighbours[1].end(); ++it) if (levelRanks[0].count(*it) == 0) - levelNeighbour[0].insert(*it); + levelNeighbours[0].insert(*it); } @@ -58,4 +59,35 @@ namespace AMDiS { { } + + void MeshLevelData::print() + { + FUNCNAME("MeshLevelData::print()"); + + using boost::lexical_cast; + + MSG("Print mesh level structure with %d levels: \n", nLevel); + + for (int i = 0; i < nLevel; i++) { + string ranks = "ranks in level " + lexical_cast<string>(i) + ":"; + for (std::set<int>::iterator it = levelRanks[i].begin(); + it != levelRanks[i].end(); ++it) + ranks += " " + lexical_cast<string>(*it); + + string neighbours = "neighbours in level " + lexical_cast<string>(i) + ": "; + for (std::set<int>::iterator it = levelNeighbours[i].begin(); + it != levelNeighbours[i].end(); ++it) + neighbours += " " + lexical_cast<string>(*it); + + if (ranks.length() < 250) + MSG(" %s\n", ranks.c_str()); + else + MSG(" ranks string to long!\n"); + + if (neighbours.length() < 250) + MSG("%s\n", neighbours.c_str()); + else + MSG(" neighbours string to long!\n"); + } + } } diff --git a/AMDiS/src/parallel/MeshLevelData.h b/AMDiS/src/parallel/MeshLevelData.h index 832ce999..4ccb8122 100644 --- a/AMDiS/src/parallel/MeshLevelData.h +++ b/AMDiS/src/parallel/MeshLevelData.h @@ -27,6 +27,7 @@ #include <iostream> #include <set> #include <vector> +#include "Global.h" namespace AMDiS { @@ -49,12 +50,28 @@ namespace AMDiS { // Reads the object data from an input stream. void deserialize(istream &in); + void print(); + + std::set<int>& getLevelRanks(int level) + { + TEST_EXIT_DBG(level < nLevel)("Should not happen!\n"); + + return levelRanks[level]; + } + + std::set<int>& getLevelNeighbours(int level) + { + TEST_EXIT_DBG(level < nLevel)("Should not happen!\n"); + + return levelNeighbours[level]; + } + protected: vector<std::set<int> > levelRanks; int nLevel; - vector<std::set<int> > levelNeighbour; + vector<std::set<int> > levelNeighbours; }; } -- GitLab