Skip to content

Commit

Permalink
Change VOF density flux form in mdot to cancel out buoyancy (#1192)
Browse files Browse the repository at this point in the history
* Change density form in mdot to cancel out buoyancy

* Fix LHS and re-bless

* Format text

---------

Co-authored-by: whorne <[email protected]>
Co-authored-by: psakievich <[email protected]>
  • Loading branch information
3 people committed Jun 21, 2023
1 parent cbcb4d7 commit 923bc26
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 20 deletions.
6 changes: 3 additions & 3 deletions reg_tests/test_files/VOFDroplet/VOFDroplet.norm.gold
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
0.0001417205047386008 11 0.0001
4.686504088256447e-05 12 0.0002
1.667681063887448e-05 13 0.0003
2.67343413675555e-05 11 0.0001
6.859619665424383e-06 12 0.0002
3.313464463487743e-06 13 0.0003
2 changes: 1 addition & 1 deletion reg_tests/test_files/VOFDroplet/VOFDroplet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ linear_solvers:
realms:

- name: realm_1
mesh: "generated:150x150x4|bbox:-0.5,-0.5,-0.5,0.5,0.5,0.5|sideset:xXyYzZ|show"
mesh: "generated:75x75x75|bbox:-0.5,-0.5,-0.5,0.5,0.5,0.5|sideset:xXyYzZ|show"
use_edges: yes
automatic_decomposition_type: rcb

Expand Down
23 changes: 9 additions & 14 deletions src/edge_kernels/ContinuityEdgeSolverAlg.C
Original file line number Diff line number Diff line change
Expand Up @@ -88,22 +88,15 @@ ContinuityEdgeSolverAlg::execute()
const DblType pressureL = pressure.get(nodeL, 0);
const DblType pressureR = pressure.get(nodeR, 0);

const DblType densityL =
om_solveIncompressibleEqn * density.get(nodeL, 0) +
solveIncompressibleEqn;
const DblType densityR =
om_solveIncompressibleEqn * density.get(nodeR, 0) +
solveIncompressibleEqn;

const DblType udiagL =
udiag.get(nodeL, 0) * (om_solveIncompressibleEqn +
solveIncompressibleEqn * density.get(nodeL, 0));
const DblType udiagR =
udiag.get(nodeR, 0) * (om_solveIncompressibleEqn +
solveIncompressibleEqn * density.get(nodeR, 0));
const DblType densityL = density.get(nodeL, 0);
const DblType densityR = density.get(nodeR, 0);

const DblType udiagL = udiag.get(nodeL, 0);
const DblType udiagR = udiag.get(nodeR, 0);
const DblType projTimeScale = 0.5 * (1.0 / udiagL + 1.0 / udiagR);
const DblType rhoIp = 0.5 * (densityL + densityR);
const DblType denScale =
(1.0 / rhoIp) * solveIncompressibleEqn + om_solveIncompressibleEqn;

DblType axdx = 0.0;
DblType asq = 0.0;
Expand Down Expand Up @@ -137,7 +130,9 @@ ContinuityEdgeSolverAlg::execute()
kxj * GjIp * nocFac;
}
tmdot /= tauScale;
const DblType lhsfac = -asq * inv_axdx * projTimeScale / tauScale;
tmdot *= denScale;
const DblType lhsfac =
-asq * inv_axdx * projTimeScale * denScale / tauScale;

// Left node entries
smdata.lhs(0, 0) = -lhsfac;
Expand Down
5 changes: 3 additions & 2 deletions src/user_functions/DropletVOFAuxFunction.C
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@ DropletVOFAuxFunction::do_evaluate(

const double x = coords[0];
const double y = coords[1];
const double interface_thickness = 0.005;
const double z = coords[2];
const double interface_thickness = 0.025;

fieldPtr[0] = 0.0;
fieldPtr[0] += -0.5 * (std::erf(y / interface_thickness) + 1.0) + 1.0;

auto radius = std::sqrt(x * x + (y - 0.15) * (y - 0.15)) - 0.075;
auto radius = std::sqrt(x * x + (y - 0.25) * (y - 0.25) + z * z) - 0.075;
fieldPtr[0] += -0.5 * (std::erf(radius / interface_thickness) + 1.0) + 1.0;

fieldPtr += fieldSize;
Expand Down

0 comments on commit 923bc26

Please sign in to comment.