From 96e0b5b6155b5b371620a485ddda51a19880e0f7 Mon Sep 17 00:00:00 2001 From: cgilet Date: Tue, 3 Jun 2025 15:40:24 +0200 Subject: [PATCH 1/2] For eb flow, make tracer diffusion solve uses a Dirichlet BC on the EB. Also, only define the MFs to hold EB Dirichlet values if needed --- src/diffusion/DiffusionScalarOp.cpp | 6 ++++++ src/setup/incflo_arrays.cpp | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/diffusion/DiffusionScalarOp.cpp b/src/diffusion/DiffusionScalarOp.cpp index 5ccd8af6..e8a9b2d4 100644 --- a/src/diffusion/DiffusionScalarOp.cpp +++ b/src/diffusion/DiffusionScalarOp.cpp @@ -231,6 +231,12 @@ DiffusionScalarOp::diffuse_scalar (Vector const& tracer, } } + if (m_incflo->hasEBFlow()) { + MultiFab phi(*m_incflo->get_tracer_eb()[lev], amrex::make_alias, comp, 1); + m_eb_scal_solve_op->setEBDirichlet(lev, phi, *eta[lev]); + } // else use default homogeneous Neumann on EB + + Array b = m_incflo->average_scalar_eta_to_faces(lev, comp, *eta[lev]); m_eb_scal_solve_op->setBCoeffs(lev, GetArrOfConstPtrs(b), MLMG::Location::FaceCentroid); } diff --git a/src/setup/incflo_arrays.cpp b/src/setup/incflo_arrays.cpp index bb7769a3..dc035226 100644 --- a/src/setup/incflo_arrays.cpp +++ b/src/setup/incflo_arrays.cpp @@ -8,15 +8,12 @@ incflo::LevelData::LevelData (amrex::BoxArray const& ba, incflo* my_incflo) : velocity (ba, dm, AMREX_SPACEDIM, my_incflo->nghost_state(), MFInfo(), fact), velocity_o (ba, dm, AMREX_SPACEDIM, my_incflo->nghost_state(), MFInfo(), fact), - velocity_eb (ba, dm, AMREX_SPACEDIM, my_incflo->nghost_state(), MFInfo(), fact), density (ba, dm, 1 , my_incflo->nghost_state(), MFInfo(), fact), - density_eb (ba, dm, 1 , my_incflo->nghost_state(), MFInfo(), fact), density_o (ba, dm, 1 , my_incflo->nghost_state(), MFInfo(), fact), density_nph (ba, dm, 1 , my_incflo->nghost_state(), MFInfo(), fact), tracer (ba, dm, my_incflo->m_ntrac, my_incflo->nghost_state(), MFInfo(), fact), - tracer_eb (ba, dm, my_incflo->m_ntrac, my_incflo->nghost_state(), MFInfo(), fact), tracer_o (ba, dm, my_incflo->m_ntrac, my_incflo->nghost_state(), MFInfo(), fact), mac_phi (ba, dm, 1 , 1 , MFInfo(), fact), @@ -31,6 +28,13 @@ incflo::LevelData::LevelData (amrex::BoxArray const& ba, } else { p_nd.define(convert(ba,IntVect::TheNodeVector()), dm, 1, 0, MFInfo(), fact); } +#ifdef AMREX_USE_EB + if (my_incflo->hasEBFlow()) { + velocity_eb.define(ba, dm, AMREX_SPACEDIM, my_incflo->nghost_state(), MFInfo(), fact); + density_eb.define (ba, dm, 1 , my_incflo->nghost_state(), MFInfo(), fact); + tracer_eb.define (ba, dm, my_incflo->m_ntrac, my_incflo->nghost_state(), MFInfo(), fact); + } +#endif if (my_incflo->m_advection_type != "MOL") { divtau_o.define(ba, dm, AMREX_SPACEDIM, 0, MFInfo(), fact); if (my_incflo->m_advect_tracer) { From 1712a73e47196801d754e051772d54287dbe92a9 Mon Sep 17 00:00:00 2001 From: cgilet Date: Tue, 3 Jun 2025 15:47:24 +0200 Subject: [PATCH 2/2] Add a tracer to benchmark.eb_flow_const_vely --- test_2d/benchmark.eb_flow_const_vely | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test_2d/benchmark.eb_flow_const_vely b/test_2d/benchmark.eb_flow_const_vely index 769ee90a..0d43fbf0 100644 --- a/test_2d/benchmark.eb_flow_const_vely +++ b/test_2d/benchmark.eb_flow_const_vely @@ -28,6 +28,9 @@ incflo.fluid_model = "newtonian" # Fluid model (rheology) incflo.mu = 0.001 # Dynamic viscosity coefficient incflo.constant_density = true # +incflo.advect_tracer = true +incflo.mu_s = 0.1 + incflo.advection_type = "Godunov" incflo.redistribution_type = "StateRedist" @@ -81,3 +84,4 @@ nodal_proj.verbose = 1 # Nodal Projector # EB FLOW # #.......................................# eb_flow.vel_mag = 0.1 +eb_flow.tracer = 1. \ No newline at end of file