Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
trixi-framework
GitHub Repository: trixi-framework/Trixi.jl
Path: blob/main/src/time_integration/relaxation_methods/relaxation_methods.jl
5591 views
1
abstract type AbstractRelaxationTimeIntegrationAlgorithm <: AbstractTimeIntegrationAlgorithm end
2
3
abstract type RelaxationIntegrator <: AbstractTimeIntegrator end
4
5
get_tmp_cache(integrator::RelaxationIntegrator) = (integrator.u_tmp,)
6
7
# some algorithms from DiffEq like FSAL-ones need to be informed when a callback has modified u
8
u_modified!(integrator::RelaxationIntegrator, ::Bool) = false
9
10
# stop the time integration
11
function terminate!(integrator::RelaxationIntegrator)
12
integrator.finalstep = true
13
empty!(integrator.opts.tstops)
14
15
return nothing
16
end
17
18
@inline function update_t_relaxation!(integrator::RelaxationIntegrator)
19
# Check if due to entropy relaxation the final time would not be reached
20
if integrator.finalstep == true && integrator.gamma != 1
21
integrator.gamma = 1
22
end
23
integrator.t += integrator.gamma * integrator.dt
24
25
return nothing
26
end
27
28
include("entropy_relaxation.jl")
29
include("methods_subdiagonal.jl")
30
include("methods_vanderHouwen.jl")
31
32