From ebbaae625f7e3f713fb7918fd59b32b7d9678861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Fri, 8 May 2020 16:56:07 +0200 Subject: Fluid: Updated Mantaflow source files Includes more flexible options for dt, dx in secondary particles plugin. --- .../preprocessed/plugin/secondaryparticles.cpp | 38 +++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'extern/mantaflow') diff --git a/extern/mantaflow/preprocessed/plugin/secondaryparticles.cpp b/extern/mantaflow/preprocessed/plugin/secondaryparticles.cpp index a8913a218c1..5e24b6f28db 100644 --- a/extern/mantaflow/preprocessed/plugin/secondaryparticles.cpp +++ b/extern/mantaflow/preprocessed/plugin/secondaryparticles.cpp @@ -982,9 +982,14 @@ void flipSampleSecondaryParticles(const std::string mode, const Real c_b, const Real k_ta, const Real k_wc, - const Real dt, + const Real dt = 0, const int itype = FlagGrid::TypeFluid) { + + float timestep = dt; + if (dt <= 0) + timestep = flags.getParent()->getDt(); + if (mode == "single") { knFlipSampleSecondaryParticles(flags, v, @@ -1001,7 +1006,7 @@ void flipSampleSecondaryParticles(const std::string mode, c_b, k_ta, k_wc, - dt, + timestep, itype); } else if (mode == "multiple") { @@ -1020,7 +1025,7 @@ void flipSampleSecondaryParticles(const std::string mode, c_b, k_ta, k_wc, - dt, + timestep, itype); } else { @@ -1053,7 +1058,7 @@ static PyObject *_W_1(PyObject *_self, PyObject *_linargs, PyObject *_kwds) const Real c_b = _args.get("c_b", 13, &_lock); const Real k_ta = _args.get("k_ta", 14, &_lock); const Real k_wc = _args.get("k_wc", 15, &_lock); - const Real dt = _args.get("dt", 16, &_lock); + const Real dt = _args.getOpt("dt", 16, 0, &_lock); const int itype = _args.getOpt("itype", 17, FlagGrid::TypeFluid, &_lock); _retval = getPyNone(); flipSampleSecondaryParticles(mode, @@ -1691,13 +1696,20 @@ void flipUpdateSecondaryParticles(const std::string mode, const Real k_d, const Real c_s, const Real c_b, - const Real dt, + const Real dt = 0, + bool scale = true, const int exclude = ParticleBase::PTRACER, const int antitunneling = 0, const int itype = FlagGrid::TypeFluid) { - Vec3 g = gravity / flags.getDx(); + float gridScale = (scale) ? flags.getParent()->getDx() : 1; + Vec3 g = gravity / gridScale; + + float timestep = dt; + if (dt <= 0) + timestep = flags.getParent()->getDt(); + if (mode == "linear") { knFlipUpdateSecondaryParticlesLinear(pts_sec, v_sec, @@ -1711,7 +1723,7 @@ void flipUpdateSecondaryParticles(const std::string mode, k_d, c_s, c_b, - dt, + timestep, exclude, antitunneling); } @@ -1729,7 +1741,7 @@ void flipUpdateSecondaryParticles(const std::string mode, k_d, c_s, c_b, - dt, + timestep, exclude, antitunneling, itype); @@ -1764,10 +1776,11 @@ static PyObject *_W_2(PyObject *_self, PyObject *_linargs, PyObject *_kwds) const Real k_d = _args.get("k_d", 11, &_lock); const Real c_s = _args.get("c_s", 12, &_lock); const Real c_b = _args.get("c_b", 13, &_lock); - const Real dt = _args.get("dt", 14, &_lock); - const int exclude = _args.getOpt("exclude", 15, ParticleBase::PTRACER, &_lock); - const int antitunneling = _args.getOpt("antitunneling", 16, 0, &_lock); - const int itype = _args.getOpt("itype", 17, FlagGrid::TypeFluid, &_lock); + const Real dt = _args.getOpt("dt", 14, 0, &_lock); + bool scale = _args.getOpt("scale", 15, true, &_lock); + const int exclude = _args.getOpt("exclude", 16, ParticleBase::PTRACER, &_lock); + const int antitunneling = _args.getOpt("antitunneling", 17, 0, &_lock); + const int itype = _args.getOpt("itype", 18, FlagGrid::TypeFluid, &_lock); _retval = getPyNone(); flipUpdateSecondaryParticles(mode, pts_sec, @@ -1784,6 +1797,7 @@ static PyObject *_W_2(PyObject *_self, PyObject *_linargs, PyObject *_kwds) c_s, c_b, dt, + scale, exclude, antitunneling, itype); -- cgit v1.2.3