-
Notifications
You must be signed in to change notification settings - Fork 843
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] fix multigrid agglomeration #2375
base: develop
Are you sure you want to change the base?
Conversation
@@ -45,7 +45,7 @@ class CMultiGridGeometry final : public CGeometry { | |||
* \param[in] config - Definition of the particular problem. | |||
* \return <code>TRUE</code> or <code>FALSE</code> depending if the control volume can be agglomerated. | |||
*/ | |||
bool SetBoundAgglomeration(unsigned long CVPoint, short marker_seed, const CGeometry* fine_grid, | |||
bool SetBoundAgglomeration(unsigned long CVPoint, vector<short> marker_seed, const CGeometry* fine_grid, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to pass information about all markers on the seed node (number of markers and index of marker)
//if ((config->GetMarker_All_KindBC(marker_seed[0]) == SYMMETRY_PLANE) || | ||
// (config->GetMarker_All_KindBC(marker_seed[0]) == EULER_WALL)) { | ||
// if (config->GetMarker_All_KindBC(copy_marker[0]) == SEND_RECEIVE) { | ||
// agglomerate_CV = false; | ||
// } | ||
//} |
Check notice
Code scanning / CodeQL
Commented-out code Note
//if ((config->GetMarker_All_KindBC(copy_marker[0]) == EULER_WALL) || | ||
// (config->GetMarker_All_KindBC(copy_marker[1]) == EULER_WALL)) { | ||
agglomerate_seed = true; | ||
//} |
Check notice
Code scanning / CodeQL
Commented-out code Note
//if (config->GetMarker_All_KindBC(copy_marker[0]) == SEND_RECEIVE) { | ||
// agglomerate_CV = true; | ||
//} |
Check notice
Code scanning / CodeQL
Commented-out code Note
// agglomerate_CV = true; | ||
// } | ||
// } |
Check notice
Code scanning / CodeQL
Commented-out code Note
@@ -307,6 +307,7 @@ | |||
case SUB_SOLVER_TYPE::TURB_SST: | |||
genericSolver = CreateTurbSolver(kindTurbModel, solver, geometry, config, iMGLevel, false); | |||
metaData.integrationType = INTEGRATION_TYPE::SINGLEGRID; | |||
//metaData.integrationType = INTEGRATION_TYPE::MULTIGRID; |
Check notice
Code scanning / CodeQL
Commented-out code Note
In SU2, we overwrite part of the config settings. The nr of pre-smoothing steps for the finest grid is always 1. The nr of post-smoothing steps for the coarsest and finest grid is always 0. I do not know why. |
Thank you. We wish to contribute our knowledge about MG for scalar transport equations; if an exciting group is on this topic, we will be happy to collaborate. |
Nice to hear there is a larger interest in getting the multigrid method to a higher level. If you would like to enable multigrid for species transport, the first thing to do is change the integration type from SINGLEGRID to MULTIGRID for CreateSpeciesSolver in CSolverFactory.cpp. Then in CMultigridIntegration.cpp, there might be some solver specific things that need to be added. |
Thank you for pointing this out. Does the current agglomeration (for the mean-flow equations) consider lines normal to the surface? I think that the Hiroaki paper (MG) considred implicit line? |
Hi, No we currently do not do agglomeration along lines. I suspect this is one reason that we do not have good multigrid performance for a number of viscous testcases. @EvertBunschoten was looking into this as well, but he was not yet able to reproduce the good performance reported by the papers of Diskin, Nishikawa and others. |
Proposed Changes
Implement multigrid agglomeration rules according to Nishikawa et al paper:
https://www.researchgate.net/publication/267557097_Development_and_Application_of_Parallel_Agglomerated_Multigrid_Method_for_Complex_Geometries
These rules were not consistently implemented. Issues:
TO DO: properly agglomerate nodes that are on mpi interfaces (SEND_RECEIVE markers)
PR Checklist
Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These are a guide for you to know what the reviewers will be looking for in your contribution.
pre-commit run --all
to format old commits.