diff --git a/Src/LinearSolvers/Projections/AMReX_NodalProjector.H b/Src/LinearSolvers/Projections/AMReX_NodalProjector.H index 209e6c53436..a2c77b0cd84 100644 --- a/Src/LinearSolvers/Projections/AMReX_NodalProjector.H +++ b/Src/LinearSolvers/Projections/AMReX_NodalProjector.H @@ -7,6 +7,9 @@ #include #include +// +// +// *************************** DEFAULT MODE *************************** // // Solves // @@ -14,15 +17,31 @@ // // and performs the projection // -// vel = vel - ( sigma / alpha ) * grad(phi) +// vel = vel - sigma * grad(phi) // -// vel, sigma, alpha, and S_cc are cell-centered variables, while +// vel, sigma, and S_cc are cell-centered variables, while // phi and S_nd are nodal-centered variables. // +// *************************** CUSTOM MODE *************************** +// +// Solves +// +// div(sigma*grad(phi)) = rhs +// +// and performs the projection +// +// vel = vel - (sigma/alpha) * grad(phi) +// +// alpha is a cell-centered variable, while rhs is nodal-centered. +// +// In this mode, the user provides rhs and alpha +// // By default alpha is assumed to be 1. Use setAlpha to change the default. // -// The user can provide a custom RHS instead of letting NodalProjector to compute -// one. Use setCustomRHS to provide a custom RHS. +// Use setCustomRHS to provide a custom RHS, else "div(vel) + S_nd + S_cc" +// is used. +// +// Example: rhs = div(alpha*vel) // namespace amrex { diff --git a/Src/LinearSolvers/Projections/AMReX_NodalProjector.cpp b/Src/LinearSolvers/Projections/AMReX_NodalProjector.cpp index db0773d5738..ad3df2ec41c 100644 --- a/Src/LinearSolvers/Projections/AMReX_NodalProjector.cpp +++ b/Src/LinearSolvers/Projections/AMReX_NodalProjector.cpp @@ -241,7 +241,7 @@ NodalProjector::project ( Real a_rtol, Real a_atol ) // phi comes out already averaged-down and ready to be used by caller if needed m_mlmg -> solve( GetVecOfPtrs(m_phi), GetVecOfConstPtrs(m_rhs), a_rtol, a_atol ); - // Get fluxes -- fluxes = - (alpha/beta) * grad(phi) + // Get fluxes -- fluxes = - sigma * grad(phi) m_mlmg -> getFluxes( GetVecOfPtrs(m_fluxes) ); // At this time, the fluxes are "correct" only on regions not covered by finer grids. @@ -258,7 +258,7 @@ NodalProjector::project ( Real a_rtol, Real a_atol ) { if (m_has_alpha) { - // fluxes -> fluxes/alpha = -grad(phi)/beta + // fluxes -> fluxes/alpha = - ( sigma / alpha ) * grad(phi) for (int n = 0; n < AMREX_SPACEDIM; ++n) { MultiFab::Divide( m_fluxes[lev], *m_alpha[lev], 0, n, 1, 0 ); @@ -266,7 +266,7 @@ NodalProjector::project ( Real a_rtol, Real a_atol ) } // - // vel = vel + fluxes = vel - grad(phi) / beta + // vel = vel + fluxes = vel - ( sigma / alpha ) * grad(phi) // // Since we already averaged-down the velocity field and -grad(phi), // we perform the projection by simply adding the two of them.