Commit ed89165b authored by Reuther, Sebastian's avatar Reuther, Sebastian

adapted constant normal extension algorithm of reinit for parallel use

parent b227d4cf
......@@ -112,7 +112,10 @@ void HL_SignedDistTraverse::initializeBoundary()
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
// In parallel AMDiS synchronize the bound_DOF DOFVector with the max-assigner and the sD_DOF DOFVector with the min-assigner
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*bound_DOF, max_assigner());
if (velExt)
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*bound_DOF, velExt->getAllDOFVectorsForSynchronization(), max_assigner());
else
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*bound_DOF, max_assigner());
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
#endif
}
......@@ -131,7 +134,10 @@ void HL_SignedDistTraverse::HL_updateIteration()
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
// Update sDOld_DOF on interior domain boundaries
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sDOld_DOF, min_to_zero_assigner());
if (velExt)
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*sDOld_DOF, velExt->getAllDOFVectorsForSynchronization(), min_to_zero_assigner());
else
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sDOld_DOF, min_to_zero_assigner());
#endif
// ===== Gauss-Seidel or Jacobi iteration ? =====
......@@ -160,7 +166,10 @@ void HL_SignedDistTraverse::HL_updateIteration()
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
// Update sD_DOF on interior domain boundaries
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
if (velExt)
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*sD_DOF, velExt->getAllDOFVectorsForSynchronization(), min_to_zero_assigner());
else
AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
#endif
// ===== Is tolerance reached ? =====
......
......@@ -230,6 +230,18 @@ public:
/// Swaps two vertices in the permutation.
void swapVertices(int i1, int i2);
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
std::vector<DOFVector<double> *> getAllDOFVectorsForSynchronization() {
std::vector<DOFVector<double> *> ret;
ret.reserve(velDOF.size() + origVelDOF.size());
for ( std::vector<DOFVector<double>*>::iterator it = velDOF.begin() ; it != velDOF.end() ; ++it )
ret.push_back(*it);
for ( std::vector<DOFVector<double>*>::iterator it = origVelDOF.begin() ; it != origVelDOF.end() ; ++it )
ret.push_back(*it);
return ret;
}
#endif
protected:
/// Original velocity vector.
......
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