Luh padding and alternative layout
Currently the optimized kernels do not change luh. This was done for historical reasons (the non temp arrays had a set size independently of the kernels, now changed) and to ensure that the plotter, limiter and AMR would work no matter the kernels.
However being able to work with a padded luh or even further an SoS-layout luh (x,n,y,z coordinates instead of the current n,x,y,z) could provide a speedup. Currently the linear vectorized split_ck implementation does the back and forth transpositions to SoS layout and the cost of these is non negligible (even if more than compensated by the vectorization speedup).
The Limiter projections+tests and AMR can now be done using optimized kernels too so the compatibility issue here could easily be solved by generating the right kernels.
Regarding the plotters a preprocessing step to translate back luh locally could be added in case luh is non standard.
Is there a good way to do this?
Open questions: would this impact other domain of the code
@domcha @leo.rannabauer
Occurrences of luh:
Search Term: getSolution()
exahype plotters
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/Carpet/ADERDG2Carpet.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/Carpet/FiniteVolume2Carpet.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/CSV/ADERDG2LegendreCSV.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/CSV/Patch2CSV.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/FlashHDF5/ADERDG2FlashHDF5.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/PeanoFileFormat/ADERDG2CartesianPeanoPatchFileFormat.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/PeanoFileFormat/ADERDG2LegendrePeanoPatchFileFormat.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/PeanoFileFormat/FiniteVolumes2PeanoPatchFileFormat.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/Tecplot/ExaHyPE2Tecplot.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/ADERDG2CartesianVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/ADERDG2LegendreDivergenceVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/ADERDG2LegendreVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/ADERDG2LobattoVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/FiniteVolumes2VTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/LimitingADERDG2CartesianVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/LimitingADERDGSubcells2CartesianVTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/VTK/Patch2VTK.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/ADERDG2ProbeAscii.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/ADERDG2UserDefined.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/FiniteVolumes2ProbeAscii.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/FiniteVolumes2UserDefined.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/plotters/LimitingADERDG2UserDefined.cpp
exhaype/solvers
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/ADERDGSolver_FusedTimeStepJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/ADERDGSolver_PredictionJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/ADERDGSolver_UpdateJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/ADERDGSolver.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/FiniteVolumesSolver_UpdateJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/FiniteVolumesSolver.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/LimitingADERDGSolver_LocalRecomputationJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/LimitingADERDGSolver_UpdateJob.cpp
/ExaHyPE-Engine_upstream/ExaHyPE/exahype/solvers/LimitingADERDGSolver.cpp