From eb5b891a1156107299b3d47c4b28c7d79253cd17 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Sun, 18 Aug 2024 20:38:26 -0500 Subject: [PATCH] Add runtime parameter use_gauss_seidel to MAC and nodal projectors (#143) The default is true for both. --- Projections/hydro_MacProjector.cpp | 17 ++++++++++++++++- Projections/hydro_NodalProjector.cpp | 7 ++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Projections/hydro_MacProjector.cpp b/Projections/hydro_MacProjector.cpp index c60e0a130..d7da86c69 100644 --- a/Projections/hydro_MacProjector.cpp +++ b/Projections/hydro_MacProjector.cpp @@ -101,8 +101,9 @@ void MacProjector::initProjector ( m_eb_abeclap = std::make_unique(m_geom, ba, dm, a_lpinfo, m_eb_factory); m_linop = m_eb_abeclap.get(); - if (m_phi_loc == MLMG::Location::CellCentroid) + if (m_phi_loc == MLMG::Location::CellCentroid) { m_eb_abeclap->setPhiOnCentroid(); + } m_eb_abeclap->setScalars(0.0, 1.0); for (int ilev = 0; ilev < nlevs; ++ilev) { @@ -131,6 +132,13 @@ void MacProjector::initProjector ( m_abeclap = std::make_unique(m_geom, ba, dm, a_overset_mask, a_lpinfo); } + bool use_gauss_seidel = true; + { + ParmParse pp("mac_proj"); + pp.query("use_gauss_seidel", use_gauss_seidel); + } + m_abeclap->setGaussSeidel(use_gauss_seidel); + m_linop = m_abeclap.get(); m_abeclap->setScalars(0.0, 1.0); @@ -582,6 +590,13 @@ void MacProjector::initProjector (Vector const& a_grids, m_poisson = std::make_unique(m_geom, ba, dm, a_overset_mask, a_lpinfo); } + bool use_gauss_seidel = true; + { + ParmParse pp("mac_proj"); + pp.query("use_gauss_seidel", use_gauss_seidel); + } + m_poisson->setGaussSeidel(use_gauss_seidel); + m_linop = m_poisson.get(); m_mlmg = std::make_unique(*m_linop); diff --git a/Projections/hydro_NodalProjector.cpp b/Projections/hydro_NodalProjector.cpp index 99deec88f..62ae58104 100644 --- a/Projections/hydro_NodalProjector.cpp +++ b/Projections/hydro_NodalProjector.cpp @@ -139,7 +139,12 @@ void NodalProjector::define (LPInfo const& a_lpinfo) #endif } - m_linop->setGaussSeidel(true); + bool use_gauss_seidel = true; + { + ParmParse pp("nodal_proj"); + pp.query("use_gauss_seidel", use_gauss_seidel); + } + m_linop->setGaussSeidel(use_gauss_seidel); m_linop->setHarmonicAverage(false); //