trixi-framework / Trixi.jl

Trixi.jl: Adaptive high-order numerical simulations of conservation laws in Julia
https://trixi-framework.github.io/Trixi.jl
MIT License
505 stars 98 forks source link

Restart does not work with p4est + AMR #1914

Closed benegee closed 4 weeks ago

benegee commented 2 months ago

Extend examples/p4est_2d_dgsem/elixir_advection_extended.jl by an AMR callback like

amr_controller = ControllerThreeLevel(semi, IndicatorMax(semi, variable = first),
                                      base_level = 0,
                                      med_level = 1, med_threshold = 0.8,
                                      max_level = 2, max_threshold = 1.2)
amr_callback = AMRCallback(semi, amr_controller,
                           interval = 5,
                           adapt_initial_condition = false,
                           adapt_initial_condition_only_refine = true)

(possibly also tspan and intervals have to be changed to make sure the expected restart file is indeed written)

Then execute examples/p4est_2d_dgsem/elixir_advection_restart.jl, e.g. via

julia --project=. -e 'using Trixi;  trixi_include("../examples/p4est_2d_dgsem/elixir_advection_restart.jl")'

The following error occurs:

[23540] signal (11.1): Segmentation fault
in expression starting at /home/bene/trixi/Trixi.jl/examples/p4est_2d_dgsem/elixir_advection_restart.jl:42
unsafe_store! at ./pointer.jl:146 [inlined]
unsafe_store! at /home/bene/trixi/Trixi.jl/run/dev/P4est/src/pointerwrappers.jl:108 [inlined]
setindex! at /home/bene/trixi/Trixi.jl/run/dev/P4est/src/pointerwrappers.jl:88 [inlined]
copy_to_quad_iter_volume at /home/bene/trixi/Trixi.jl/src/callbacks_step/amr.jl:533

At this point p4est's user_data array is accessed:

quad_data_pw = PointerWrapper(Int, info_pw.quad.p.user_data[])
quad_data_pw[2] = controller_value

But it is not created when calling load_p4est, in contrast to new_p4est which is used in initial constructors.

sloede commented 2 months ago

Can you reproduce this error with C code? If yes, maybe it's a bug, not a feature?