From 3d5acc4bb1045e03a8492889b7922380d8601042 Mon Sep 17 00:00:00 2001 From: Wyatt Horne <68676884+wjhorne@users.noreply.github.com> Date: Mon, 9 Sep 2024 12:35:59 -0400 Subject: [PATCH] Move VOF sharpening and diffusion coefficients to be user modifiable (#1293) * Fix VOF diffusion coeff * Make diffusion and sharpening modifiable via user input --------- Co-authored-by: whorne --- include/SolutionOptions.h | 2 ++ src/SolutionOptions.C | 8 ++++++++ src/edge_kernels/VOFAdvectionEdgeAlg.C | 18 ++++++++++-------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/SolutionOptions.h b/include/SolutionOptions.h index 5257abd9b..0e0501a05 100644 --- a/include/SolutionOptions.h +++ b/include/SolutionOptions.h @@ -102,6 +102,8 @@ class SolutionOptions bool use_balanced_buoyancy_force_{false}; bool realm_has_vof_{false}; + double vof_sharpening_scaling_factor_{5.0}; + double vof_diffusion_scaling_factor_{0.6}; double hybridDefault_; double alphaDefault_; diff --git a/src/SolutionOptions.C b/src/SolutionOptions.C index 092b1b008..151389487 100644 --- a/src/SolutionOptions.C +++ b/src/SolutionOptions.C @@ -136,6 +136,14 @@ SolutionOptions::load(const YAML::Node& y_node) y_solution_options, "use_balanced_buoyancy_force", use_balanced_buoyancy_force_, use_balanced_buoyancy_force_); + get_if_present( + y_solution_options, "vof_sharpening_scaling_factor", + vof_sharpening_scaling_factor_, vof_sharpening_scaling_factor_); + + get_if_present( + y_solution_options, "vof_diffusion_scaling_factor", + vof_diffusion_scaling_factor_, vof_diffusion_scaling_factor_); + // Solve for incompressible continuity get_if_present( y_solution_options, "solve_incompressible_continuity", diff --git a/src/edge_kernels/VOFAdvectionEdgeAlg.C b/src/edge_kernels/VOFAdvectionEdgeAlg.C index 0b07f112d..510251684 100644 --- a/src/edge_kernels/VOFAdvectionEdgeAlg.C +++ b/src/edge_kernels/VOFAdvectionEdgeAlg.C @@ -87,6 +87,11 @@ VOFAdvectionEdgeAlg::execute() const int ndim = realm_.meta_data().spatial_dimension(); const auto& meta = realm_.meta_data(); + const DblType sharpening_scaling = + realm_.solutionOptions_->vof_sharpening_scaling_factor_; + const DblType diffusion_scaling = + realm_.solutionOptions_->vof_diffusion_scaling_factor_; + const DblType alphaUpw = realm_.get_alpha_upw_factor("volume_of_fluid"); const DblType hoUpwind = realm_.get_upw_factor("volume_of_fluid"); const DblType relaxFac = @@ -214,16 +219,13 @@ VOFAdvectionEdgeAlg::execute() axdx += av[d] * dxj; } - // Hard-coded values comes from Jain, 2022 to enforce - // VOF function bounds of [0,1] while maintaining interface - // thickness that is ~2 cells - const DblType velocity_scale = - 5.0 * stk::math::abs( - vdot / - stk::math::sqrt(av[0] * av[0] + av[1] * av[1] + av[2] * av[2])); + sharpening_scaling * + stk::math::abs( + vdot / + stk::math::sqrt(av[0] * av[0] + av[1] * av[1] + av[2] * av[2])); - diffusion_coef = stk::math::sqrt(diffusion_coef) * 0.3; + diffusion_coef = stk::math::sqrt(diffusion_coef) * diffusion_scaling; const DblType inv_axdx = 1.0 / axdx;