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
536 stars 109 forks source link

Converting StructuredMesh to uniform grid #2024

Open pawelmagnu opened 3 months ago

pawelmagnu commented 3 months ago

I am conducting a comparison between Trixi.jl and an analytical solution for a simple 2D advection problem. I have succesfully ran _examples/structured_2d_dgsem/elixir_advectionbasic.jl and obtained the solution file. However when reading the file I obtain 16 times more values than expected(4096 instead of 256). I am assuming the factor of 16 comes from the argument polydeg=3 in DGSEM solver.

How would I go about converting the resulting vector of 4096 values into a 16x16 grid for my comparison?

jlchan commented 3 months ago

You could average the solution over each cell. There may be a cleaner way, but the internal routine Trixi.wrap_array will reshape the solution vector into an array of size [num_fields, N+1, N+1, num_elements] in 2D.

The best way to average the solution is to use the quadrature nodes available in dg.basis or solver.basis to compute integral averages of the solution over each cell, but you could take the arithmetic average over each cell u[i, :, :, cell_index] as well.

andrewwinters5000 commented 3 months ago

If you use trixi2vtk to convert the solution files it, by default, reinterpolates to the solution from the nnodes Legendre-Gauss-Lobatto points (which is polydeg+1) onto 2*nnodes that are uniform. This would explain your situation.