From 78e65fd322439c0af7f2927d6597ecc275105366 Mon Sep 17 00:00:00 2001 From: Sven Berger Date: Wed, 14 May 2025 16:16:04 +0200 Subject: [PATCH 1/2] fix --- .../fluid/entropically_damped_sph/system.jl | 4 ++++ src/schemes/fluid/transport_velocity.jl | 14 ++++---------- .../fluid/weakly_compressible_sph/system.jl | 4 ++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/schemes/fluid/entropically_damped_sph/system.jl b/src/schemes/fluid/entropically_damped_sph/system.jl index 0d0c6b2052..bb68818283 100644 --- a/src/schemes/fluid/entropically_damped_sph/system.jl +++ b/src/schemes/fluid/entropically_damped_sph/system.jl @@ -306,6 +306,10 @@ function update_final!(system::EntropicallyDampedSPHSystem, v, u, v_ode, u_ode, compute_curvature!(system, surface_tension, v, u, v_ode, u_ode, semi, t) compute_stress_tensors!(system, surface_tension, v, u, v_ode, u_ode, semi, t) update_average_pressure!(system, system.transport_velocity, v_ode, u_ode, semi) + + # checks for callback dependent models + check_tvf_configuration(system, system.transport_velocity, v, u, v_ode, u_ode, semi, t; + update_from_callback) end function update_average_pressure!(system, ::Nothing, v_ode, u_ode, semi) diff --git a/src/schemes/fluid/transport_velocity.jl b/src/schemes/fluid/transport_velocity.jl index 3b4796fab2..2fea2b858e 100644 --- a/src/schemes/fluid/transport_velocity.jl +++ b/src/schemes/fluid/transport_velocity.jl @@ -165,19 +165,13 @@ function update_callback_used!(system, transport_velocity) system.cache.update_callback_used[] = true end -function update_final!(system::FluidSystem, v, u, v_ode, u_ode, semi, t; - update_from_callback=false) - update_final!(system, system.transport_velocity, - v, u, v_ode, u_ode, semi, t; update_from_callback) -end - -function update_final!(system::FluidSystem, ::Nothing, - v, u, v_ode, u_ode, semi, t; update_from_callback=false) +function check_tvf_configuration(system::FluidSystem, ::Nothing, + v, u, v_ode, u_ode, semi, t; update_from_callback=false) return system end -function update_final!(system::FluidSystem, ::TransportVelocityAdami, - v, u, v_ode, u_ode, semi, t; update_from_callback=false) +function check_tvf_configuration(system::FluidSystem, ::TransportVelocityAdami, + v, u, v_ode, u_ode, semi, t; update_from_callback=false) if !update_from_callback && !(system.cache.update_callback_used[]) throw(ArgumentError("`UpdateCallback` is required when using `TransportVelocityAdami`")) end diff --git a/src/schemes/fluid/weakly_compressible_sph/system.jl b/src/schemes/fluid/weakly_compressible_sph/system.jl index 69cc4598a9..d913766099 100644 --- a/src/schemes/fluid/weakly_compressible_sph/system.jl +++ b/src/schemes/fluid/weakly_compressible_sph/system.jl @@ -298,6 +298,10 @@ function update_final!(system::WeaklyCompressibleSPHSystem, v, u, v_ode, u_ode, # Surface normal of neighbor and boundary needs to have been calculated already compute_curvature!(system, surface_tension, v, u, v_ode, u_ode, semi, t) compute_stress_tensors!(system, surface_tension, v, u, v_ode, u_ode, semi, t) + + # checks for callback dependent models + check_tvf_configuration(system, system.transport_velocity, v, u, v_ode, u_ode, semi, t; + update_from_callback) end function kernel_correct_density!(system::WeaklyCompressibleSPHSystem, v, u, v_ode, u_ode, From a874e97b55a4ce4e9ef6112e657e225f89c8b1d4 Mon Sep 17 00:00:00 2001 From: Sven Berger Date: Mon, 19 May 2025 13:07:09 +0200 Subject: [PATCH 2/2] review --- src/schemes/fluid/entropically_damped_sph/system.jl | 2 +- src/schemes/fluid/transport_velocity.jl | 2 ++ src/schemes/fluid/weakly_compressible_sph/system.jl | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/schemes/fluid/entropically_damped_sph/system.jl b/src/schemes/fluid/entropically_damped_sph/system.jl index bb68818283..0865f82277 100644 --- a/src/schemes/fluid/entropically_damped_sph/system.jl +++ b/src/schemes/fluid/entropically_damped_sph/system.jl @@ -307,7 +307,7 @@ function update_final!(system::EntropicallyDampedSPHSystem, v, u, v_ode, u_ode, compute_stress_tensors!(system, surface_tension, v, u, v_ode, u_ode, semi, t) update_average_pressure!(system, system.transport_velocity, v_ode, u_ode, semi) - # checks for callback dependent models + # Check that TVF is only used together with `UpdateCallback` check_tvf_configuration(system, system.transport_velocity, v, u, v_ode, u_ode, semi, t; update_from_callback) end diff --git a/src/schemes/fluid/transport_velocity.jl b/src/schemes/fluid/transport_velocity.jl index 2fea2b858e..32ea57e7c9 100644 --- a/src/schemes/fluid/transport_velocity.jl +++ b/src/schemes/fluid/transport_velocity.jl @@ -172,6 +172,8 @@ end function check_tvf_configuration(system::FluidSystem, ::TransportVelocityAdami, v, u, v_ode, u_ode, semi, t; update_from_callback=false) + # The `UpdateCallback` will set `system.cache.update_callback_used[]` to `true` + # in the initialization. However, other callbacks might update the system first, hence `update_from_callback`. if !update_from_callback && !(system.cache.update_callback_used[]) throw(ArgumentError("`UpdateCallback` is required when using `TransportVelocityAdami`")) end diff --git a/src/schemes/fluid/weakly_compressible_sph/system.jl b/src/schemes/fluid/weakly_compressible_sph/system.jl index 817586ff01..6512ce58a6 100644 --- a/src/schemes/fluid/weakly_compressible_sph/system.jl +++ b/src/schemes/fluid/weakly_compressible_sph/system.jl @@ -305,7 +305,7 @@ function update_final!(system::WeaklyCompressibleSPHSystem, v, u, v_ode, u_ode, compute_curvature!(system, surface_tension, v, u, v_ode, u_ode, semi, t) compute_stress_tensors!(system, surface_tension, v, u, v_ode, u_ode, semi, t) - # checks for callback dependent models + # Check that TVF is only used together with `UpdateCallback` check_tvf_configuration(system, system.transport_velocity, v, u, v_ode, u_ode, semi, t; update_from_callback) end