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

RFC: source terms via global vector storage #173

Merged
merged 61 commits into from
Nov 27, 2024
Merged
Changes from 1 commit
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
d5ecc49
add getter for number of dofs
benegee Feb 22, 2024
72709e5
change trixi_load_cell_average
benegee Feb 22, 2024
71ba4bf
fix: ensure Int32
benegee Feb 23, 2024
9c83b05
adapt reference value
benegee Feb 23, 2024
5b3960b
add getter for all dofs values
benegee Feb 23, 2024
3e31f4a
adapt next value
benegee Feb 23, 2024
2d45c62
add trixi_store_in_database
benegee Feb 26, 2024
92d817a
add trixi_ndofs_element
benegee Feb 26, 2024
530f5cc
add tests
benegee Feb 26, 2024
c7d38d4
add missing parts in tests
benegee Feb 26, 2024
ba00c6f
fix tests
benegee Feb 26, 2024
cdf6e5e
deallocate first
benegee Feb 26, 2024
aa6d8c7
add trixi_load_prim to Fortran API
benegee Feb 26, 2024
cf43795
reference value
benegee Feb 26, 2024
dda491a
get doxygen right
benegee Feb 26, 2024
35513ac
Merge branch 'main' into more-data-access
sloede Feb 26, 2024
bf0b732
Merge branch 'main' into bg/store-in-database
benegee Feb 28, 2024
b864850
add trixi_get_time, trixi_load_node_coordinates
benegee Feb 29, 2024
9430f2d
implement source terms controller
benegee Feb 29, 2024
5956a78
libelixir with source terms via database
benegee Feb 29, 2024
ccd23fc
change Array to Vector
benegee Feb 29, 2024
1be73d9
spelling
benegee Feb 29, 2024
6170610
Merge branch 'more-data-access' into bg/store-in-database
benegee Mar 7, 2024
94cc1c7
Merge branch 'more-data-access' of github.com:trixi-framework/libtrix…
benegee Mar 7, 2024
7dbb2c6
make everything more consistent!
benegee Mar 7, 2024
7906080
use const double *
benegee Mar 8, 2024
ff6ac54
Merge branch 'main' into more-data-access
benegee Mar 11, 2024
dfea9e4
Merge branch 'main' into more-data-access
sloede Apr 18, 2024
017e166
Merge branch 'bg/store-in-database' of github.com:trixi-framework/lib…
benegee May 13, 2024
f534175
Merge branch 'main' into more-data-access
benegee May 13, 2024
8b6a81f
Merge branch 'more-data-access' into bg/store-in-database
benegee May 13, 2024
f96436b
missed merge conflict
benegee May 13, 2024
b76ca70
transpose calloc args
benegee May 13, 2024
37b88a1
Merge branch 'main' into more-data-access
benegee Jun 25, 2024
95ba0cc
Merge branch 'more-data-access' into bg/store-in-database
benegee Jun 28, 2024
b40a2a1
add functions to get quadrature information
benegee Jul 24, 2024
e4d6901
update CI badge URL
benegee Jul 24, 2024
66ee664
Merge branch 'main' into more-data-access
benegee Jul 24, 2024
3f665f0
Merge branch 'more-data-access' into bg/store-in-database
benegee Jul 24, 2024
3a0387b
remove load_node_coordinates
benegee Jul 24, 2024
6627b97
add get_t8code_forest to Fortran interface
benegee Jul 26, 2024
2550872
format
benegee Jul 26, 2024
211de01
Merge branch 'more-data-access' into bg/store-in-database
benegee Jul 26, 2024
08daf22
add trixi_store_in_database to Fortran interface
benegee Jul 26, 2024
312e979
Merge branch 'main' into bg/store-in-database
benegee Nov 18, 2024
a175a04
adapt min version according to main CMakeLists.txt
benegee Nov 18, 2024
d5fd61f
missed while merging
benegee Nov 18, 2024
4449a82
Merge branch 'main' into bg/store-in-database
benegee Nov 19, 2024
0a359b1
change default argument for DataBase parameter
benegee Nov 19, 2024
7b654a4
remove deprecated export
benegee Nov 19, 2024
41ab02a
test for get_time
benegee Nov 19, 2024
6bda669
add tests for trixi_store_in_database
benegee Nov 19, 2024
a8c573e
need Int32
benegee Nov 19, 2024
5a33b95
cannot compare Refs
benegee Nov 19, 2024
378dc90
check based on address
benegee Nov 19, 2024
8c36455
relax error tolerance
benegee Nov 19, 2024
f28d802
remove deprecated example
benegee Nov 19, 2024
fdfb80d
rename get_time to get_simulation_time
benegee Nov 25, 2024
9b2508d
rename database to registry
benegee Nov 25, 2024
e21ba07
spurious Ref access
benegee Nov 25, 2024
223866d
Merge branch 'main' into bg/store-in-database
sloede Nov 26, 2024
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
Prev Previous commit
Next Next commit
add tests for trixi_store_in_database
benegee committed Nov 19, 2024
commit 6bda6694221606db6a41fafbd24e5c3414bfa87f
4 changes: 3 additions & 1 deletion LibTrixi.jl/examples/libelixir_p4est2d_dgsem_euler_sedov.jl
Original file line number Diff line number Diff line change
@@ -106,7 +106,9 @@ function init_simstate()
###############################################################################
# Create simulation state

simstate = SimulationState(semi, integrator)
# database only used for tests
database = LibTrixiDataBaseType(undef, 1)
simstate = SimulationState(semi, integrator, database)

return simstate
end
12 changes: 12 additions & 0 deletions LibTrixi.jl/test/test_interface.jl
Original file line number Diff line number Diff line change
@@ -67,6 +67,18 @@ end
# compare finished status
@test trixi_is_finished(handle) == 0
@test !trixi_is_finished_jl(simstate_jl)

# manually increase databases (for testing only!)
push!(simstate_jl.data, Vector{Float64}())
push!(LibTrixi.simstates[handle].data, Vector{Float64}())
# store a vector
test_data = [1.0, 2.0, 3.0]
trixi_store_in_database(handle, 1, 3, pointer(test_data))
trixi_store_in_database_jl(simstate_jl, 1, test_data)
# check that references are the same
@test simstate_jl.data[1] == LibTrixi.simstates[handle].data[1]
# check for correct values
@test simstate_jl.data[1][] == LibTrixi.simstates[handle].data[1][] == test_data
end


2 changes: 1 addition & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ foreach ( EXAMPLE ${EXAMPLES} )
# set libraries to link
target_link_libraries(
${TARGET_NAME}
PRIVATE MPI::MPI_${EXAMPLE_LANG} ${PROJECT_NAME} m
PRIVATE MPI::MPI_${EXAMPLE_LANG} ${PROJECT_NAME}
)
if ( NOT USE_PACKAGE_COMPILER )
target_link_libraries( ${TARGET_NAME} PRIVATE ${PROJECT_NAME}_tls )
5 changes: 0 additions & 5 deletions test/c/interface_c.cpp
Original file line number Diff line number Diff line change
@@ -9,11 +9,6 @@ extern "C" {
// Julia project path defined via cmake
const char * julia_project_path = JULIA_PROJECT_PATH;

// Example libexlixir
const char * libelixir_path =
"../../../LibTrixi.jl/examples/libelixir_p4est2d_dgsem_euler_sedov.jl";


TEST(CInterfaceTest, JuliaProject) {

// be evil
16 changes: 11 additions & 5 deletions test/c/simulation.cpp
Original file line number Diff line number Diff line change
@@ -40,6 +40,12 @@ TEST(CInterfaceTest, SimulationRun) {
EXPECT_DEATH(trixi_is_finished(42),
"the provided handle was not found in the stored simulation states: 42");

// Store a vector in database
std::vector<double> test_data(3);
trixi_store_in_database(handle, 1, 3, test_data.data());
EXPECT_DEATH(trixi_store_in_database(handle, 2, 3, test_data.data()),
"BoundsError");

// Do 10 simulation steps
for (int i = 0; i < 10; ++i) {
trixi_step(handle);
@@ -51,7 +57,7 @@ TEST(CInterfaceTest, SimulationRun) {

// Check time
double time = trixi_get_time(handle);
EXPECT_NEAR(dt, 0.028566952356658794, 1e-17);
EXPECT_NEAR(time, 0.0304927240859461, 1e-17);

// Check finished status
int finished_status = trixi_is_finished(handle);
@@ -99,7 +105,7 @@ TEST(CInterfaceTest, SimulationRun) {
std::vector<double> energy(ndofs);
trixi_load_primitive_vars(handle, 1, rho.data());
trixi_load_primitive_vars(handle, 4, energy.data());
// check memory boarders
// check memory borders
EXPECT_DOUBLE_EQ(rho[0], 1.0);
EXPECT_DOUBLE_EQ(rho[ndofs-1], 1.0);
EXPECT_DOUBLE_EQ(energy[0], 1.0e-5);
@@ -115,7 +121,7 @@ TEST(CInterfaceTest, SimulationRun) {
trixi_load_element_averaged_primitive_vars(handle, 3, v2_averages.data());
trixi_load_element_averaged_primitive_vars(handle, 4, e_averages.data());
if (nranks == 1) {
// check memory boarders (densities at the beginning, energies at the end)
// check memory borders (densities at the beginning, energies at the end)
EXPECT_DOUBLE_EQ(rho_averages[0], 1.0);
EXPECT_DOUBLE_EQ(e_averages[nelements-1], 1.0e-5);
// check values somewhere near the center (expect symmetries)
@@ -132,7 +138,7 @@ TEST(CInterfaceTest, SimulationRun) {
}
else if (nranks == 2) {
if (rank == 0) {
// check memory boarders (densities at the beginning, energies at the end)
// check memory borders (densities at the beginning, energies at the end)
EXPECT_DOUBLE_EQ(rho_averages[0], 1.0);
EXPECT_DOUBLE_EQ(e_averages[nelements-1], 1.0e-5);
// check values somewhere near the center (expect symmetries)
@@ -144,7 +150,7 @@ TEST(CInterfaceTest, SimulationRun) {
EXPECT_NEAR(v2_averages[94], -0.14037267400591, 1e-14);
}
else {
// check memory boarders (densities at the beginning, energies at the end)
// check memory borders (densities at the beginning, energies at the end)
EXPECT_DOUBLE_EQ(rho_averages[0], 1.0);
EXPECT_DOUBLE_EQ(e_averages[nelements-1], 1.0e-5);
// check values somewhere near the center (expect symmetries)
9 changes: 7 additions & 2 deletions test/fortran/simulationRun_suite.f90
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ subroutine test_simulationRun(error)
logical :: finished_status
! dp as defined in test-drive
integer, parameter :: dp = selected_real_kind(15)
real(dp) :: dt, integral
real(dp) :: dt, time, integral
real(dp), dimension(:), allocatable :: data, weights

! Initialize Trixi
@@ -37,6 +37,11 @@ subroutine test_simulationRun(error)
handle = trixi_initialize_simulation(libelixir_path)
call check(error, handle, 1)

! Store a vector in database
allocate(data(3))
call trixi_store_in_database(handle, 1, 3, data)
deallocate(data)

! Do a simulation step
call trixi_step(handle)

@@ -46,7 +51,7 @@ subroutine test_simulationRun(error)

! Check time step length
time = trixi_get_time(handle)
call check(error, time, 0.0032132984504400627_dp)
call check(error, time, 0.0032382397675568731_dp)

! Check finished status
finished_status = trixi_is_finished(handle)