Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further updates to Taal #212

Merged
merged 14 commits into from
Oct 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/src/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ julia> using Revise; using Trixi
```
You can run a simulation by executing
```julia
julia> Trixi.run("examples/2d/parameters.toml")
julia> Trixi.run("examples/2d/parameters_advection_basic.toml")
sloede marked this conversation as resolved.
Show resolved Hide resolved
```
Together, all of these commands can take some time, roughly half a minute on a
modern workstation. Most of the time is spent on compilation of Julia code etc.
Expand Down
6 changes: 3 additions & 3 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,9 @@ seconds, while subsequent runs require less than 50 *milli*seconds.
To automatically determine the experimental order of convergence (EOC) for a
given setup, execute
```julia
Trixi.convtest("examples/2d/parameters.toml", 4)
Trixi.convtest("examples/2d/parameters_advection_basic.toml", 4)
```
This will run a convergence test with the parameters file `examples/2d/parameters.toml`,
This will run a convergence test with the parameters file `examples/2d/parameters_advection_basic.toml`,
using four iterations with different initial refinement levels. The initial
iteration will use the parameters file unchanged, while for each subsequent
iteration the `initial_refinement_level` parameter is incremented by one.
Expand Down Expand Up @@ -187,7 +187,7 @@ mean 3.99

An example with multiple variables looks like this:
```julia
julia> Trixi.convtest("examples/2d/parameters_source_terms.toml", 3)
julia> Trixi.convtest("examples/2d/parameters_euler_source_terms.toml", 3)
```
```
[...]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# TODO: Taal refactor, rename to
# - linear_advection_amr.jl
# - advection_amr.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# TODO: Taal refactor, rename to
# - linear_advection.jl
# - advection_basic.jl
# or something similar? parameters.jl isn't really helpful...

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_blast_wave_shockcapturing.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_ec.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_nonperiodic.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_source_terms.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# TODO: Taal refactor, rename to
# - linear_advection_amr.jl
# - advection_amr.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# TODO: Taal refactor, rename to
# - linear_advection.jl
# - advection_basic.jl
# or something similar? parameters.jl isn't really helpful...

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# TODO: Taal refactor, rename to
# - linear_advection_mortar.jl
# - advection_mortar.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_blast_wave_shockcapturing.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_blast_wave_shockcapturing_amr.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_ec.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_nonperiodic.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - euler_source_terms.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# TODO: Taal refactor, rename to
# - mhd_ec.jl
# or something similar?

using OrdinaryDiffEq
using Trixi
Expand Down
57 changes: 0 additions & 57 deletions examples/2d/parameters_ec_performance_test.toml

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
8 changes: 4 additions & 4 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ There are also a few files that were configured such that they lend themselves
to doing convergence tests with `convtest`, i.e., to determine the experimental order
of convergence (EOC):

* [`parameters.toml`](parameters.toml):
* [`parameters_advection_basic.toml`](parameters_advection_basic.toml):
EOC tests for linear scalar advection with `polydeg = 3`.
* [`parameters_source_terms.toml`](parameters_source_terms.toml):
* [`parameters_euler_source_terms.toml`](parameters_euler_source_terms.toml):
EOC tests for Euler equations with `polydeg = 3`.
* [`parameters_alfven_wave.toml`](parameters_alfven_wave.toml):
* [`parameters_mhd_alfven_wave.toml`](parameters_mhd_alfven_wave.toml):
EOC tests for MHD equations with `polydeg = 3`.
* [`parameters_hyp_diff_llf.toml`](parameters_hyp_diff_llf.toml):
EOC tests for hyperbolic diffusion equations with `polydeg = 4`.

In general, a good first parameter file to try out as a new user is
[`parameters.toml`](parameters.toml), as it is short, takes less than a second
[`parameters_advection_basic.toml`](parameters_advection_basic.toml), as it is short, takes less than a second
to run, and uses only the basic features of Trixi.
38 changes: 19 additions & 19 deletions examples/paper-self-gravitating-gas-dynamics/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,63 +3,63 @@
## Sec. 4.1.1, Table 2, EOC tests compressible Euler
**polydeg = 3**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_euler.toml", 4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_euler_eoc_test.toml", 4)
```

**polydeg = 4**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_euler.toml", 4, polydeg=4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_euler_eoc_test.toml", 4, polydeg=4)
```

## Sec. 4.1.2, Table 3, EOC tests hyperbolic diffusion
**polydeg = 3**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_hyperbolic_diffusion.toml", 4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_hyp_diff_eoc_test.toml", 4)
```

**polydeg = 4**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_hyperbolic_diffusion.toml", 4, polydeg=4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_hyp_diff_eoc_test.toml", 4, polydeg=4)
```

## Sec. 4.1.3, Table 4, EOC tests coupled Euler-gravity
**polydeg = 3**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_coupled_euler_gravity.toml", 4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_eoc_test.toml", 4)
```

**polydeg = 4**:
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_coupled_euler_gravity.toml", 4, polydeg=4)
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_eoc_test.toml", 4, polydeg=4)
```

## Sec. 4.1.3, Table 5, EOC tests coupled Euler-gravity (update gravity once per step)
```julia
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_eoc_test_coupled_euler_gravity.toml", 4,
Trixi.convtest("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_eoc_test.toml", 4,
update_gravity_once_per_stage=false)
```

## Sec. 4.2.1, Figures 3 + 5a, Jeans energies with Euler/CK45 and gravity/CK45
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_jeans_instability.toml")
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_jeans_instability.toml")
```

## Sec. 4.2.1, Figure 4, Jeans energies with Euler/CK45 and gravity/CK45 (update gravity once per step)
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_jeans_instability.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_jeans_instability.toml",
update_gravity_once_per_stage=false)
```

## Sec. 4.2.1, Figure 5b, Jeans energies with Euler/CK45 and gravity/RK3S*
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_jeans_instability.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_jeans_instability.toml",
time_integration_scheme_gravity="timestep_gravity_erk52_3Sstar!", cfl_gravity=1.2)
```

## Sec. 4.2.1, Creating Jeans energies figures 3 and 4
One must also shrink the analysis interval in the above command, e.g.,
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_jeans_instability.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_jeans_instability.toml",
analysis_interval=1)
```
to generate necessary data for the plots to look nice. Then run the python
Expand All @@ -72,47 +72,47 @@ to generate the figure.
## Sec. 4.2.2, Figure 6, T=0.5, AMR meshes for Sedov + gravity
**T = 0.0 and T = 0.5:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml", t_end=0.5)
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml", t_end=0.5)
```

**T = 1.0:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml")
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml")
```

## Sec. 4.2.2, Figure 7a, T=0.5, Sedov + gravity with Euler/CK45 and gravity/RK3S*
**AMR mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml", t_end=0.5)
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml", t_end=0.5)
```

**Uniform mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml",
amr_interval=0, initial_refinement_level=8, t_end=0.5)
```

## Sec. 4.2.2, Figure 7b, T=1.0, Sedov + gravity with Euler/CK45 and gravity/RK3S*
**AMR mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml")
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml")
```

**Uniform mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml",
amr_interval=0, initial_refinement_level=8)
```

## Sec. 4.2.2, Table 6, Sedov + gravity, performance uniform vs. AMR
**AMR mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml")
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml")
```

**Uniform mesh:**
```julia
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_sedov_self_gravity.toml",
Trixi.run("examples/paper-self-gravitating-gas-dynamics/parameters_euler_gravity_sedov_blast_wave.toml",
amr_interval=0, initial_refinement_level=8)
```

Expand Down
2 changes: 1 addition & 1 deletion src/auxiliary/auxiliary.jl
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ end

Return the path to an example parameter file that can be used to quickly see Trixi in action.
"""
default_example() = joinpath(examples_dir(), "2d", "parameters.jl")
default_example() = joinpath(examples_dir(), "2d", "elixir_advection_basic.jl")


"""
Expand Down
12 changes: 10 additions & 2 deletions src/callbacks/amr_dg1d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,12 @@ function refine!(u_ode::AbstractVector, adaptor, mesh::TreeMesh{1},
element_id += 1
end
end
@assert element_id == nelements(dg, cache) + 1 || element_id == nelements(dg, cache) + 2^ndims(mesh) "element_id = $element_id, nelements(dg, cache) = $(nelements(dg, cache))"
@boundscheck begin
# If everything is correct, we should have processed all elements.
# Depending on whether the last element processed above had to be refined or not,
# the counter `element_id` can have two different values at the end.
@assert element_id == nelements(dg, cache) + 1 || element_id == nelements(dg, cache) + 2^ndims(mesh) "element_id = $element_id, nelements(dg, cache) = $(nelements(dg, cache))"
end
sloede marked this conversation as resolved.
Show resolved Hide resolved
end # GC.@preserve old_u_ode

# TODO: Taal performance, allow initializing the stuff in place, making use of resize!
Expand Down Expand Up @@ -177,7 +182,10 @@ function coarsen!(u_ode::AbstractVector, adaptor, mesh::TreeMesh{1},
element_id += 1
end
end
@assert element_id == nelements(dg, cache) + 1 "element_id = $element_id, nelements(dg, cache) = $(nelements(dg, cache))"
@boundscheck begin
# If everything is correct, we should have processed all elements.
@assert element_id == nelements(dg, cache) + 1 "element_id = $element_id, nelements(dg, cache) = $(nelements(dg, cache))"
end
end # GC.@preserve old_u_ode

# TODO: Taal performance, allow initializing the stuff in place, making use of resize!
Expand Down
Loading