Liebe Gitlab-Nutzer, lieber Gitlab-Nutzer, es ist nun möglich sich mittels des ZIH-Logins/LDAP an unserem Dienst anzumelden. Ein Anmelden über dieses erzeugt ein neues Konto. Das alte Konto ist über den Reiter "Standard" erreichbar. Die Administratoren

Dear Gitlab user, it is now possible to log in to our service using the ZIH login/LDAP. Logging in via this will create a new account. The old account can be accessed via the "Standard" tab. The administrators

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

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