diff --git a/AMDiS/src/FileWriter.cc b/AMDiS/src/FileWriter.cc index a7f24c2e4299c7d31808b0e17348f7fc931e98b4..bdc19c4220a3000cc9419fc4bf9dc0f043b186fd 100644 --- a/AMDiS/src/FileWriter.cc +++ b/AMDiS/src/FileWriter.cc @@ -13,13 +13,17 @@ #include "Mesh.h" #include "OpenMP.h" +#if HAVE_PARALLEL_DOMAIN_AMDIS +#include "mpi.h" +#endif + namespace AMDiS { - FileWriter::FileWriter(const std::string &name_, - Mesh *mesh_, + FileWriter::FileWriter(const std::string &str, + Mesh *m, DOFVector<double> *vec) - : name(name_), - mesh(mesh_) + : name(str), + mesh(m) { FUNCNAME("FileWriter::FileWriter()"); @@ -42,10 +46,9 @@ namespace AMDiS { initialize(); - for (int i = 0; i < static_cast<int>(vecs.size()); i++) { + for (int i = 0; i < static_cast<int>(vecs.size()); i++) TEST_EXIT(vecs[0]->getFESpace() == vecs[i]->getFESpace()) ("All FESpace have to be equal!\n"); - } feSpace = vecs[0]->getFESpace(); solutionVecs_ = vecs; @@ -87,11 +90,9 @@ namespace AMDiS { { // Do not forget to delete temporal solution vector, if there have been // some created in the constructor. - if (nTmpSolutions_ > 0) { - for (int i = 0; i < nTmpSolutions_; i++) { + if (nTmpSolutions_ > 0) + for (int i = 0; i < nTmpSolutions_; i++) delete solutionVecs_[i]; - } - } } @@ -166,21 +167,25 @@ namespace AMDiS { std::vector< DataCollector* > dataCollectors(solutionVecs_.size()); if (writeElem) { - for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) { + for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) dataCollectors[i] = new DataCollector(feSpace, solutionVecs_[i], level, flag, writeElem); - } } else { - for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) { + for (int i = 0; i < static_cast<int>(dataCollectors.size()); i++) dataCollectors[i] = new DataCollector(feSpace, solutionVecs_[i], traverseLevel, flag | traverseFlag, writeElement); - } } std::string fn = filename; +#if HAVE_PARALLEL_DOMAIN_AMDIS + char f[10]; + sprintf(f, "-p%d-", MPI::COMM_WORLD.Get_rank()); + fn += f; +#endif + if (appendIndex) { TEST_EXIT(indexLength <= 99)("index lenght > 99\n"); TEST_EXIT(indexDecimals <= 97)("index decimals > 97\n"); diff --git a/AMDiS/src/ParallelDomainBase.h b/AMDiS/src/ParallelDomainBase.h index 9a4a32135ba3a583268c98edf05d867445b3b451..2abd7a9cd74fff5dc259ddd539b48b6e3c735d82 100644 --- a/AMDiS/src/ParallelDomainBase.h +++ b/AMDiS/src/ParallelDomainBase.h @@ -105,15 +105,35 @@ namespace AMDiS { void partitionMesh(AdaptInfo *adaptInfo); - virtual void setTime(AdaptInfo *adaptInfo) {} + virtual void setTime(AdaptInfo *adaptInfo) + { + if (timeIF) + timeIF->setTime(adaptInfo); + } - virtual void initTimestep(AdaptInfo *adaptInfo) {} + virtual void initTimestep(AdaptInfo *adaptInfo) + { + if (timeIF) + timeIF->initTimestep(adaptInfo); + } - virtual void closeTimestep(AdaptInfo *adaptInfo) {} + virtual void closeTimestep(AdaptInfo *adaptInfo) + { + if (timeIF) + timeIF->closeTimestep(adaptInfo); + } - virtual void solveInitialProblem(AdaptInfo *adaptInfo) {} + virtual void solveInitialProblem(AdaptInfo *adaptInfo) + { + if (timeIF) + timeIF->solveInitialProblem(adaptInfo); + } - virtual void transferInitialSolution(AdaptInfo *adaptInfo) {} + virtual void transferInitialSolution(AdaptInfo *adaptInfo) + { + if (timeIF) + timeIF->transferInitialSolution(adaptInfo); + } virtual void beginIteration(AdaptInfo *adaptInfo) {