diff --git a/src/schemes/fluid/entropically_damped_sph/system.jl b/src/schemes/fluid/entropically_damped_sph/system.jl index 0d0c6b2052..0865f82277 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) + + # 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 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..32ea57e7c9 100644 --- a/src/schemes/fluid/transport_velocity.jl +++ b/src/schemes/fluid/transport_velocity.jl @@ -165,19 +165,15 @@ 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) + # 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 74306d8445..6512ce58a6 100644 --- a/src/schemes/fluid/weakly_compressible_sph/system.jl +++ b/src/schemes/fluid/weakly_compressible_sph/system.jl @@ -304,6 +304,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) + + # 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 function kernel_correct_density!(system::WeaklyCompressibleSPHSystem, v, u, v_ode, u_ode,