Commit 8d9574c0 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Make periodic boundaries working also for parallel domain problems.

parent 42cd169f
This diff is collapsed.
......@@ -93,7 +93,7 @@ namespace AMDiS {
virtual void initParallelization(AdaptInfo *adaptInfo);
void exitParallelization(AdaptInfo *adaptInfo);
virtual void exitParallelization(AdaptInfo *adaptInfo);
void updateDofAdmins();
......@@ -194,7 +194,7 @@ namespace AMDiS {
* Determine the interior boundaries, i.e. boundaries between ranks, and store
* all information about them in \ref interiorBoundary.
*/
void createInteriorBoundaryInfo(DofContainer& rankDOFs);
void createInteriorBoundaryInfo();
/// Removes all macro elements from the mesh that are not part of ranks partition.
void removeMacroElements();
......@@ -276,9 +276,15 @@ namespace AMDiS {
DofToRank& boundaryDofs,
DofToBool& vertexDof);
/** \brief
* Takes a dof matrix and sends the values to the global petsc matrix.
*/
void setDofMatrix(DOFMatrix* mat, int dispMult = 1,
int dispAddRow = 0, int dispAddCol = 0);
/** \brief
* Takes a dof vector and sends its values to a given petsc vector.
*/
void setDofVector(Vec& petscVec, DOFVector<double>* vec,
int disMult = 1, int dispAdd = 0);
......@@ -299,6 +305,22 @@ namespace AMDiS {
*/
void DbgTestCommonDofs(bool printCoords = false);
/** \brief
* This function is used for debugging only. It prints all information from
* the local to global dof mapping, see \ref mapLocalGlobalDOFs.
*
* \param rank If specified, only the information from the given rank is printed.
*/
void writeMapLocalGlobal(int rank = -1);
/** \brief
* This function is used for debugging only. It prints all information about
* the periodic mapping of dofs, that are on periodic boundaries.
*
* \param rank If specified, only the information from the given rank is printed.
*/
void writeMapPeriodic(int rank = -1);
/** \brief
* This functions create a Paraview file with the macro mesh where the elements
* are colored by the partition they are part of. This function can be used for
......@@ -397,6 +419,14 @@ namespace AMDiS {
vec[1] = dof3;
}
inline void printColValues(int row,
std::vector<int>& cols,
std::vector<double>& values)
{
for (int i = 0; i < static_cast<int>(cols.size()); i++)
std::cout << "Mat[" << row << "][" << cols[i] << "] = " << values[i] << "\n";
}
protected:
///
ProblemIterationInterface *iterationIF;
......
......@@ -85,6 +85,11 @@ namespace AMDiS {
}
}
void ParallelDomainVec::exitParallelization(AdaptInfo *adaptInfo)
{
ParallelDomainBase::exitParallelization(adaptInfo);
}
void ParallelDomainVec::solve()
{
......
......@@ -36,6 +36,8 @@ namespace AMDiS {
void initParallelization(AdaptInfo *adaptInfo);
void exitParallelization(AdaptInfo *adaptInfo);
virtual void solveInitialProblem(AdaptInfo *adaptInfo)
{
ParallelDomainBase::solveInitialProblem(adaptInfo);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment