Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
434 commits
Select commit Hold shift + click to select a range
b039e6c
formatter
Nov 13, 2025
fac3de3
old warning comment
Nov 13, 2025
bdc7001
old mra for debugging purpose
Nov 13, 2025
94d0f08
add vtk plotter for polynomial data
Nov 13, 2025
898ca00
old subdividing vtk plotter
Nov 13, 2025
f922931
add levelindex_set
Nov 13, 2025
f85d6be
formatting
Nov 13, 2025
a93be42
adding additional data structure
Nov 13, 2025
f88ca42
debugging output
Nov 13, 2025
3a9878b
add new multiscale transformation
Nov 13, 2025
5862739
add new coarsening_callback
Nov 13, 2025
7ce3779
new iterate_replace_callback
Nov 13, 2025
6e325b7
new coarsening approach
Nov 13, 2025
201b963
new refinement approach
Nov 13, 2025
5e67e81
new way to calculate local norm
Nov 13, 2025
eb0f07d
misc stuff (has to be refactored anyways)
Nov 13, 2025
128f990
vtk testing example
Nov 13, 2025
4627c00
add new methods for debugging and new vtk plotter
Nov 13, 2025
46dad5a
testing for base eval functions
Nov 13, 2025
a09ec03
add new examples
Nov 13, 2025
4f835f6
add new class for cartesian elements
Nov 14, 2025
74d59ea
add 1d legendre basis for cartesian elements
Nov 14, 2025
469ff67
added cartesian trafo for ref/deref
Nov 14, 2025
b7cbf88
add functions for tensor evaluation on multiindices
Nov 14, 2025
22ec63a
add quadrature rules for intervals
Nov 14, 2025
52d8235
add compute_dof functions for different shapes
Nov 14, 2025
8b4a1f3
add dg_basis for cartesian grids
Nov 14, 2025
f804170
add vtk-plotter for quads
Nov 14, 2025
b10e7a5
add dummy mra for cartesian
Nov 14, 2025
9641097
add lmis for quads
Nov 14, 2025
fa479b7
add new classes and files
Nov 14, 2025
d619412
testing with plotter/imst
Nov 14, 2025
3209154
verify cartesian projection
Nov 14, 2025
9754ef0
add new examples
Nov 14, 2025
7deb9bd
just added some comments
Nov 27, 2025
5d29e99
fixed min/max for cartesian
Nov 27, 2025
2e6affc
adding some hard coded mask coeffs for quads
Nov 27, 2025
757fceb
added mask coeffs for cartesian elements
Nov 27, 2025
16e4492
some other hard coded mask coeffs
Nov 27, 2025
34e5e44
reordering of pset in cartesian 2d
Nov 27, 2025
2148402
some debugging commands
Nov 27, 2025
aa9bef8
adding some working coarsening for quads
Nov 27, 2025
9a0be3a
adding vtk plotter for quads
Nov 27, 2025
e936b9d
adding coarsening example for quads
Nov 27, 2025
0cd8d15
adding new example function
Nov 27, 2025
d145d3b
adding coarsening example
Nov 27, 2025
75d309c
adding void pointer for mra
Nov 28, 2025
3fc24ae
adding mra base class for crtp (-> static polymorphism)
Nov 28, 2025
c6d0238
policy-based multiscaletransformation
Nov 28, 2025
62719dc
adding specialization for triangles
Nov 28, 2025
0a623c6
adding specification for quads
Nov 28, 2025
7049229
add adaptation class for t8code + mst
Nov 28, 2025
bce7eca
refactor plotter for triangles/quads
Nov 28, 2025
b199c95
example for new structure
Nov 28, 2025
1571201
add new example
Nov 28, 2025
2b5428e
using is_cartesian for LINE/QUAD/HEX
Nov 28, 2025
d03426b
removed adapt function
Nov 28, 2025
fe0253f
fixed ordering in min/max vertices
Nov 28, 2025
bc76fd3
try to fix 3D simulations...still not working properly (with order > 1)
Nov 28, 2025
8bbef7b
adding some examples for 2D/3D
Nov 28, 2025
5ca9abc
add missing files
Feb 10, 2026
dd5d136
removed some old files
Feb 10, 2026
a0cf9f1
fixed typos for debug mode
Feb 10, 2026
8012d8c
fixed bug in coarening step
Feb 10, 2026
6cb7944
initial data can additionally be called via c-arrays
Feb 10, 2026
6738ff6
add new example using c-arrays
Feb 10, 2026
0738be1
default init of vol
Jun 11, 2026
9840d66
throws is lmi is missing in mpa
Jun 11, 2026
6dc939c
set mra_instance and current ref. level to user_data
Jun 11, 2026
b96d66a
unref only if forest is not nullptr
Jun 11, 2026
6bd3456
compute details of leaf without modifying grid data
Jun 11, 2026
b3adfad
adding hartens prediction
Jun 11, 2026
0742fed
perform two-scale trafo on complete family
Jun 11, 2026
c680621
refactored adapation routines
Jun 11, 2026
0a07b5e
changed example
Jun 11, 2026
255c7b1
some unittests of mra
Jun 11, 2026
27a35d4
fixed bug with staling entries
Jun 11, 2026
042c1e8
made gtest static dep
Jun 11, 2026
70848ef
removed old files
Jun 11, 2026
b192454
add .cache dir
Jun 11, 2026
f48bdc7
removed old files
Jun 11, 2026
36d1f5a
changed some comments
Jun 11, 2026
c727c35
removed old examples
Jun 11, 2026
0f26a70
renaming of old function names
Jun 11, 2026
b372383
removed .cache
Jun 11, 2026
cd9cd76
removed debug outputs
Jun 11, 2026
552646d
removed current refinement level
Jun 11, 2026
d063288
removed current refinement level
Jun 11, 2026
c0e4615
small refactoring -> cleaning up
Jun 11, 2026
1380d4b
moved scaled detail norm
Jun 11, 2026
34bf1ce
adding coarsening/refinement criteria for more abstract interface
Jun 11, 2026
16c9f5b
replace coarse/refine by abstract interface
Jun 11, 2026
bf741cc
add test for new criteria interface
Jun 11, 2026
fa9278c
new criteria files
Jun 11, 2026
2ca43fa
new structure of the mra module
Jun 11, 2026
0025a55
better docu
Jun 11, 2026
2987d13
dunavant/quadrature are now static
Jun 11, 2026
f6aac48
thresholding/convergence are now in criterias
Jun 11, 2026
fee5acf
simplified cstr
Jun 11, 2026
a1e923c
updated docu
Jun 11, 2026
9b10b83
updated test
Jun 11, 2026
bea551c
updated example
Jun 11, 2026
869e05c
adding bottom-top strat for init
Jun 11, 2026
f0680ce
refactor projection on leaf
Jun 11, 2026
9c0e215
more docu
Jun 11, 2026
eb334f7
testing bottom-top strat
Jun 11, 2026
1d89314
changed example
Jun 11, 2026
1d25f80
simplified output
Jun 11, 2026
33361aa
fixed 3d
Jun 11, 2026
2ab7b8d
proper 3d plots
Jun 11, 2026
43f6e45
add new example with 2 states
Jun 12, 2026
3638659
added balance method
Jun 12, 2026
316ce25
declared balancing from base class
Jun 12, 2026
8d5cb52
add balance to first example
Jun 12, 2026
d50e9dd
changed floor example
Jun 12, 2026
296d145
removed refine in triangle vs. quad
Jun 12, 2026
b77dd9a
add jump heuristic in initial data
Jun 12, 2026
58e6d7a
makes directory for examples
Jun 12, 2026
da159d9
refactoring refinement/coarsening routine (similar behaviour)
Jun 12, 2026
34cf53e
adding global normalization
Jun 12, 2026
eaf248c
data are now arrays
Jun 12, 2026
3fb89e3
adding global marks
Jun 12, 2026
c3d890a
added pull_up strategy for exchange neigh leafs which are not on same…
Jun 12, 2026
8d2d416
applying pull-up strat
Jun 12, 2026
2f5746b
adding ghost exchange
Jun 12, 2026
00eca34
adding repartition
Jun 12, 2026
42df2eb
adding mpi support
Jun 12, 2026
d556bd9
fixing mpi in tests
Jun 12, 2026
21a5d94
Merge upstream/main; enable set_for_coarsening in repartition
Jun 13, 2026
c001fc6
changed level in example
Jun 13, 2026
128d064
fixed coarsening with mpi
Jun 13, 2026
0b4752e
renaming of the mst routines
Jun 13, 2026
cf050d8
static linkage for gtest
Jun 13, 2026
976bcc7
refactored contains to find in lmi-map
Jun 13, 2026
773eb01
removed dead/old code
Jun 13, 2026
378396d
removed old comments
Jun 13, 2026
e15293e
refactored levelmulttindex, reduce codedup and easier abstractions
Jun 13, 2026
d0152d4
add shape_traits for different shapes
Jun 13, 2026
9d2caae
refactored shapes using shape_traits
Jun 13, 2026
5ff7891
refactored basis with new shape traits
Jun 13, 2026
8abc778
refactored vtk plotter by abstracting shapes/order
Jun 14, 2026
30e424c
add normalization to shapes
Jun 14, 2026
e6ea68c
renamed scaling to basis_normalization
Jun 14, 2026
e9d89bd
removed dead code
Jun 14, 2026
a26310b
simplified legendre basis
Jun 14, 2026
1f97858
moved tensor_dg into dg_basis
Jun 14, 2026
80adf62
add local leaf iterator
Jun 14, 2026
b774a03
add new function to create lmi_map using a projector
Jun 14, 2026
dbbd67d
replacing forest iteration by new helper function
Jun 14, 2026
1900ed6
cleaned up the cleanup
Jun 14, 2026
7ba64fe
aadd comments on the moved in function for the projector
Jun 14, 2026
d2ad8b2
add new data structure for details
Jun 14, 2026
a2fcc2d
using new detail data structure
Jun 14, 2026
98be28c
removed dead code and using std::sqrt instead of sqrt
Jun 14, 2026
b5e97d2
defaulted and removed dead code
Jun 14, 2026
aef70d7
removed dead code
Jun 14, 2026
1709d9b
using raii for gsl quadrature
Jun 14, 2026
318eff0
constexpr them all
Jun 14, 2026
45f036f
refactored legendre_basis using points on the stack
Jun 14, 2026
0af3ea0
adding new basis class to collect all different types
Jun 14, 2026
62c1814
removed basis stuff
Jun 14, 2026
01e8492
using new basis type
Jun 14, 2026
4dc0cf6
moving/renaming basis and quadrature
Jun 14, 2026
81722fb
add unified quadrature interface
Jun 14, 2026
83f0e81
add unified quadrature interface
Jun 14, 2026
19c2a52
replace quadrature by new interface
Jun 14, 2026
614d316
created dunavant table from old data
Jun 14, 2026
de41922
refactoring dunavant rule (more readable, modern c++)
Jun 14, 2026
e8bfd23
adding dunavant table
Jun 14, 2026
c61d6c5
new dunavant interface
Jun 14, 2026
c0b8c2a
refactored dubiner scaling functions using three-term recurrence
Jun 15, 2026
a1fa7aa
optimized triangle projection
Jun 15, 2026
6623f2a
some renaming
Jun 15, 2026
90e215e
got rid of inv_mask_coeffs
Jun 15, 2026
bd1d9ef
no inv_mask_coefficient needed anymore
Jun 15, 2026
90e4ac1
removed inv_mask_coeffs
Jun 15, 2026
7630013
generating maskmatrix via basis functions
Jun 15, 2026
0912f7d
removed old interface
Jun 15, 2026
d463909
changed some comments
Jun 15, 2026
61e5c8b
fixed ordering in mat
Jun 15, 2026
81c33ea
mask_coefficients now only uses the basis of the functions
Jun 15, 2026
7528ec0
removed old hardcoded mask coeffs
Jun 15, 2026
11a91a0
using new mask coeffs
Jun 15, 2026
8eae5fa
removed old mask coeffs
Jun 15, 2026
183b6a0
removed old vec code
Jun 15, 2026
4fd9585
cleaning of old geometry functions
Jun 15, 2026
9d021a5
get rid of old stuff
Jun 15, 2026
9f264bc
using new dg_basis
Jun 15, 2026
5376015
adding gradient dg on triangles
Jun 15, 2026
55445e2
add lmi tests
Jun 16, 2026
7dcfde7
add test to cmake
Jun 16, 2026
4c59a9d
add lmi_map/set tests
Jun 16, 2026
e2f4476
add element_data tests
Jun 16, 2026
393a21c
add test fixture for num tests
Jun 16, 2026
d29e38a
testing quadrature
Jun 16, 2026
0c718c6
header...
Jun 16, 2026
1e4f72f
std lib...
Jun 16, 2026
5bcd60d
testing gradient
Jun 16, 2026
8eda4ad
testing mask matrix
Jun 16, 2026
035b98a
testing affine trafos and trafo to ref elements
Jun 16, 2026
f58b74d
header...
Jun 16, 2026
6f575a5
testing mat + lu
Jun 16, 2026
94b10f8
adding test for ref/deref on cartesian
Jun 16, 2026
1b7d39c
adding ref/deref on triangles
Jun 16, 2026
1a3c364
add tests for eval/gradient
Jun 16, 2026
4a2605e
add missing test files
Jun 16, 2026
c7154a3
more tests for more shapes
Jun 16, 2026
3413b08
fixed testss with P_DIM = 1
Jun 22, 2026
40980a1
some comments and fixed eps for numerical tests
Jun 22, 2026
d551272
adding mst tests
Jun 22, 2026
33df8a2
add mst test
Jun 22, 2026
1c2bdcb
adding configs for testing general forest with mra
Jun 22, 2026
b0cdfbb
adding class for easy tests with mra + forest
Jun 22, 2026
98ea665
adding smooth, constant and discontinuous function for testing
Jun 22, 2026
4412fe8
adding equal operator for lmi maps
Jun 22, 2026
2b6eb2a
adding frame for mra_criteria
Jun 22, 2026
ef0759b
testing local treshold values
Jun 22, 2026
bffec5c
adding function to create solution on uniform grids
Jun 22, 2026
4193a82
detail scaling tests
Jun 22, 2026
1a18f9b
different hard_thresholding strategies
Jun 22, 2026
fa8ee7d
test hartens prediction (steep => neighbour)
Jun 22, 2026
601897b
adding sharp test for hard thresholding
Jul 1, 2026
0d6e5d6
testing grading
Jul 1, 2026
c5e7170
adding mra_criteria tests
Jul 1, 2026
bea59b5
added graded function
Jul 1, 2026
00066e1
added single poly functions
Jul 1, 2026
ab59b20
adding some projection tests
Jul 1, 2026
c7837d1
adding some conservation tests
Jul 1, 2026
5d54902
adding evaluation for cartesian meshes
Jul 1, 2026
f84b0ea
added evaluation for triangular meshes
Jul 1, 2026
43f7d7d
testing evaluation
Jul 1, 2026
6e93dc2
removed clamp from old bug
Jul 1, 2026
b828068
adding reference evaluation
Jul 1, 2026
9eef444
using reference evaluation
Jul 1, 2026
ddab9e5
using reference evaluation
Jul 1, 2026
81d09c9
overriding evaluate for global evaluation in basis
Jul 1, 2026
c948dd4
adding pure virtual function for evaluate
Jul 1, 2026
217915c
adding point_query struct for global search
Jul 1, 2026
d5add99
adding search query to search for the correct cell
Jul 1, 2026
c732c48
evaluating on global domain
Jul 1, 2026
80ec037
testing global domain evaluation
Jul 1, 2026
8bb4a01
adding mean values
Jul 1, 2026
2f4b9ec
adding test for mean vals
Jul 1, 2026
c157cd6
adding gradient eval
Jul 1, 2026
83c4ae7
testing gradient eval
Jul 1, 2026
9c1a124
adding 1d test functions
Jul 1, 2026
660b866
extend tests to 1d
Jul 1, 2026
1576880
refactored detect jumps, now using the mean_val function
Jul 1, 2026
d04bf43
refactored test using the new mean_val functions
Jul 1, 2026
ca7523b
fixed tresholding, using mean_val
Jul 1, 2026
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ build/

.deps/
.libs/
.cache/

libtool
config.log
Expand Down
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ project(
VERSION "${T8CODE_VERSION_MAJOR}.${T8CODE_VERSION_MINOR}.${T8CODE_VERSION_PATCH}"
)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

include( GNUInstallDirs)
include( CTest )
include( CMakeDependentOption )
Expand All @@ -53,6 +55,7 @@ option( T8CODE_BUILD_FORTRAN_INTERFACE "Build t8code's Fortran interface" OFF )

option( T8CODE_ENABLE_MPI "Enable t8code's features which rely on MPI" ON )
option( T8CODE_ENABLE_VTK "Enable t8code's features which rely on VTK" OFF )
option( T8CODE_ENABLE_MRA "Enable t8code's features which rely on MRA" OFF )
option( T8CODE_ENABLE_OCC "Enable t8code's features which rely on OpenCASCADE" OFF )

option( T8CODE_USE_SYSTEM_SC "Use system-installed sc library" OFF )
Expand Down Expand Up @@ -218,6 +221,13 @@ if( T8CODE_ENABLE_VTK )
endif (VTK_FOUND)
endif( T8CODE_ENABLE_VTK )

if( T8CODE_ENABLE_MRA )
find_package(GSL REQUIRED)
if(GSL_FOUND)
message("Found GSL")
endif(GSL_FOUND)
endif( T8CODE_ENABLE_MRA )

if( T8CODE_ENABLE_OCC )
find_package( OpenCASCADE REQUIRED COMPONENTS
TKBO TKPrim TKTopAlgo
Expand Down
20 changes: 18 additions & 2 deletions cmake/thirdparty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,22 @@ foreach(INDEX RANGE ${DEPS_RANGE})
message(WARNING "Unknown thirdparty library type '${DEP_TYPE}' for ${DEP_NAME}")
endif()

# 3. Populate the thirdparty library
FetchContent_MakeAvailable(${DEP_NAME})
# 3. Populate the thirdparty library.
# Build googletest statically even when t8code is a shared library: a shared
# libgtest.so collides at load time with a system libgtest.so of the same
# soname but different symbols (e.g. the DLR-SC MPI fork), causing runtime
# "undefined symbol" errors. A static gtest is baked into each test binary.
if(DEP_NAME STREQUAL "googletest")
set(_t8_saved_build_shared "${BUILD_SHARED_LIBS}")
set(_t8_saved_pic "${CMAKE_POSITION_INDEPENDENT_CODE}")
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
FetchContent_MakeAvailable(${DEP_NAME})
set(BUILD_SHARED_LIBS "${_t8_saved_build_shared}")
set(CMAKE_POSITION_INDEPENDENT_CODE "${_t8_saved_pic}")
unset(_t8_saved_build_shared)
unset(_t8_saved_pic)
else()
FetchContent_MakeAvailable(${DEP_NAME})
endif()
endforeach()
10 changes: 10 additions & 0 deletions cmake/thirdparty.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@
"ref": "2296a990d8b6b54731a63be0ba5bc17b08cd1f3d",
"shallow": "TRUE"
}
},
{
"name": "unordered_dense",
"depends_on_cmake_option": "",
"source": {
"type": "git",
"url": "https://github.com/martinus/unordered_dense.git",
"ref": "v4.5.0",
"shallow": "TRUE"
}
}
]
}
74 changes: 74 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,80 @@ if( T8CODE_ENABLE_OCC )
)
endif()

if( T8CODE_ENABLE_MRA )
target_compile_definitions( T8 PUBLIC T8_ENABLE_MRA )

# Add GSL library
target_link_libraries( T8 PUBLIC GSL::gsl GSL::gslcblas )

# Add unordered_dense library https://github.com/martinus/unordered_dense
# Fetched via cmake/thirdparty.json; unordered_dense_SOURCE_DIR is set by FetchContent.
set( UNORDERED_DENSE_DIR "${unordered_dense_SOURCE_DIR}/include" )

target_include_directories(T8 PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>
$<BUILD_INTERFACE:${UNORDERED_DENSE_DIR}>
$<INSTALL_INTERFACE:include>
)

target_sources( T8 PRIVATE
t8_mra/num/basis/dubiner.cxx
t8_mra/num/quadrature/dunavant.cxx
)

install( FILES
t8_mra/t8_mra.hxx
DESTINATION include/t8_mra )

install( FILES
t8_mra/core/base.hxx
t8_mra/core/adaptation.hxx
t8_mra/core/mst.hxx
DESTINATION include/t8_mra/core )

install( FILES
t8_mra/io/vtk.hxx
DESTINATION include/t8_mra/io )

install( FILES
t8_mra/shapes/triangle.hxx
t8_mra/shapes/cartesian.hxx
DESTINATION include/t8_mra/shapes )

install( FILES
t8_mra/criteria/coarsening_criterion.hxx
t8_mra/criteria/refinement_criterion.hxx
DESTINATION include/t8_mra/criteria )

install( FILES
t8_mra/data/element_data.hxx
t8_mra/data/levelindex_map.hxx
t8_mra/data/levelindex_set.hxx
t8_mra/data/levelmultiindex.hxx
t8_mra/data/triangle_order.hxx
DESTINATION include/t8_mra/data )

install( FILES
t8_mra/num/dg_basis.hxx
t8_mra/num/geometry.hxx
t8_mra/num/mask_coefficients.hxx
t8_mra/num/mat.hxx
DESTINATION include/t8_mra/num )

install( FILES
t8_mra/num/basis/basis.hxx
t8_mra/num/basis/legendre.hxx
t8_mra/num/basis/dubiner.hxx
DESTINATION include/t8_mra/num/basis )

install( FILES
t8_mra/num/quadrature/quadrature.hxx
t8_mra/num/quadrature/gauss_legendre.hxx
t8_mra/num/quadrature/dunavant.hxx
t8_mra/num/quadrature/dunavant_table.hxx
DESTINATION include/t8_mra/num/quadrature )
endif()

if( T8CODE_BUILD_PEDANTIC )
target_compile_options( T8 PUBLIC -pedantic )
set (T8_CXXFLAGS "${T8_CXXFLAGS} -Wpedantic")
Expand Down
Loading