Skip to content
Open
Show file tree
Hide file tree
Changes from 121 commits
Commits
Show all changes
123 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
895282a
add example source_term library
benegee Feb 28, 2024
eb95ae0
new libelixir demonstrating callback
benegee Feb 28, 2024
2cf9bb4
Merge branch 'main' into bg/source-terms-callback
benegee Feb 28, 2024
e15a9bb
use path relative to install directory
benegee Feb 28, 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
584a674
libelixir for baroclinic instability
benegee Feb 29, 2024
7c82c90
remove method only required by steady state correction
benegee Mar 4, 2024
d1850a7
Update LibTrixi.jl/examples/libelixir_p4est3d_euler_baroclinic_instab…
benegee Mar 4, 2024
fd103d9
Merge branch 'main' into bg/baroclinic-instability
benegee Mar 4, 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
44ffad8
Merge branch 'bg/store-in-database' into bg/baroclinic-instability
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
49394c7
Merge branch 'bg/store-in-database' into bg/baroclinic-instability
benegee Jul 24, 2024
9bc76b4
add baroclinic instability elixir and controller
benegee Jul 24, 2024
110219d
fix
benegee Jul 25, 2024
ade7e73
clean up
benegee Jul 25, 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
e7ab9eb
Merge branch 'bg/store-in-database' into bg/baroclinic-instability
benegee Jul 26, 2024
6672d9c
add fortran controller for baroclinic test case
benegee Jul 26, 2024
e48dcb2
remove parameter t
Aug 29, 2024
00e4914
spelling
benegee Aug 29, 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
b150614
Merge branch 'main' into bg/source-terms-callback
benegee Nov 19, 2024
a8d2058
fix merge fails
benegee Nov 19, 2024
0351ea9
Merge branch 'bg/store-in-database' into bg/baroclinic-instability
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
d95de39
Merge branch 'bg/store-in-database' into bg/baroclinic-instability
benegee Nov 20, 2024
492d1c4
new cubed sphere examples
benegee Nov 20, 2024
272a0a2
remove deprecated libelixir
benegee Nov 20, 2024
9e36f4e
unify naming of libelixirs
benegee Nov 20, 2024
c6ec30a
fixes
benegee Nov 20, 2024
b866b8b
adapt index.md to README.md
benegee Nov 20, 2024
ac1b653
change to non-adaptive time integrator
benegee Nov 20, 2024
58444f3
missing controlers in ci checks
benegee Nov 20, 2024
5f02f44
Merge branch 'main' into bg/baroclinic-instability
benegee Nov 27, 2024
218cd91
use zeros in initial data
benegee Nov 27, 2024
47a2e4c
missing renamings
benegee Nov 27, 2024
8bd1b23
time not needed anymore
benegee Nov 27, 2024
85f882c
tuned simulation parameters
benegee Nov 27, 2024
49fa815
itree and ielement need to be 0-based
benegee Nov 27, 2024
5cf1aec
one more to free
benegee Nov 28, 2024
8ccad7b
ouch...
benegee Nov 28, 2024
5599568
less output
benegee Nov 28, 2024
86d28ba
Merge branch 'bg/baroclinic-instability' into bg/source-terms-callback
benegee Nov 28, 2024
a90d983
add trixi_get_data_pointer
benegee Dec 2, 2024
449149f
add examples working with data pointer
benegee Dec 2, 2024
427b253
Merge branch 'main' into bg/raw-data-access
benegee Jan 16, 2025
9dec2df
changed file name
benegee Jan 16, 2025
4274883
Merge branch 'main' into bg/source-terms-callback
benegee Jan 17, 2025
c8cae4c
improve example using new passive tracer equations
benegee Jul 31, 2025
4c06845
Merge branch 'main' into bg/raw-data-access
benegee Jul 31, 2025
e5b53a7
new Trixi compat
benegee Jul 31, 2025
7c5f20b
adjust time steps
benegee Jul 31, 2025
a15a65e
fix access pattern
benegee Jul 31, 2025
f3927d5
add trixi_(load|store)_conservative_vars
benegee Jul 31, 2025
bd0670e
tests
benegee Jul 31, 2025
aa098d9
!fixup
benegee Jul 31, 2025
b29b880
!fixup
benegee Jul 31, 2025
4ee71ba
fortran test
benegee Jul 31, 2025
bbf2a60
reference
benegee Jul 31, 2025
5b2d2cc
mention new examples
benegee Aug 1, 2025
bbc37f1
Merge branch 'main' into bg/raw-data-access
benegee Sep 25, 2025
4372c57
rename (load|store)*vars to var
benegee Oct 8, 2025
2aa9710
Merge branch 'bg/raw-data-access' into bg/source-terms-callback
benegee Oct 8, 2025
d97e743
Merge branch 'main' into bg/raw-data-access
benegee Oct 8, 2025
2d1bb72
niceify
benegee Oct 8, 2025
1a8f059
Merge branch 'bg/raw-data-access' into bg/source-terms-callback
benegee Oct 8, 2025
482ee63
typo
benegee Oct 8, 2025
33b4903
move so next to libelixir
benegee Oct 8, 2025
548850d
Merge branch 'main' into bg/source-terms-callback
benegee Oct 9, 2025
d4db650
use Base.RefValue{NTuple}
benegee Oct 9, 2025
1ad3ff6
easier to write
benegee Oct 9, 2025
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
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ jobs:
mkdir libtrixi-julia
cd libtrixi-julia
cp ../install/share/libtrixi/LibTrixi.jl/examples/libelixir_* .
cp ../install/lib/libsource_terms.so .
mkdir julia-depot
../install/bin/libtrixi-init-julia .. \
--hdf5-library /usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5.so \
Expand Down Expand Up @@ -243,6 +244,7 @@ jobs:
# all controllers
../build/examples/trixi_controller_simple_c . libelixir_tree1d_advection_basic.jl
../build/examples/trixi_controller_simple_f . libelixir_tree1d_advection_basic.jl
../build/examples/trixi_controller_simple_c . libelixir_structured2d_source_terms_callback.jl
../build/examples/trixi_controller_data_load_c . libelixir_t8code2d_euler_tracer_amr.jl
../build/examples/trixi_controller_data_load_f . libelixir_t8code2d_euler_tracer_amr.jl
../build/examples/trixi_controller_data_store_c . libelixir_t8code2d_euler_tracer_amr.jl
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
using LibTrixi
using Trixi
using OrdinaryDiffEq
using Libdl

struct SourceTermsCallback
source_term_fptr::Ptr{Nothing}
buffer::Vector{Cdouble}

function SourceTermsCallback(; n_vars, so_path)
so_handle = dlopen(so_path)
@info "Opened library ", dlpath(so_handle)
source_term_fptr = dlsym(so_handle, "source_term_wave")
@info "Obtained function pointer ", source_term_fptr

new(source_term_fptr, Vector{Cdouble}(undef, n_vars))
end
end

function (callback::SourceTermsCallback)(u, x, t, equations::CompressibleEulerEquations2D)
@unpack source_term_fptr, buffer = callback
@ccall $source_term_fptr(u::Ptr{Cdouble}, x::Ptr{Cdouble}, t::Cdouble,
equations.gamma::Cdouble, buffer::Ptr{Cdouble})::Cvoid
return SVector(buffer[1], buffer[2], buffer[3], buffer[4])
end

# The function to create the simulation state needs to be named `init_simstate`
function init_simstate()

###############################################################################
# semidiscretization of the compressible Euler equations

# use external function in locally compiled shared object
source_terms_callback = SourceTermsCallback(n_vars = 4,
so_path = joinpath(@__DIR__,
"libsource_terms.so"))

equations = CompressibleEulerEquations2D(1.4)

initial_condition = initial_condition_convergence_test

solver = DGSEM(polydeg = 3, surface_flux = flux_lax_friedrichs)

coordinates_min = (0.0, 0.0)
coordinates_max = (2.0, 2.0)

cells_per_dimension = (16, 16)

mesh = StructuredMesh(cells_per_dimension, coordinates_min, coordinates_max)

semi = SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver,
source_terms = source_terms_callback)

###############################################################################
# ODE solvers, callbacks etc.

tspan = (0.0, 2.0)
ode = semidiscretize(semi, tspan)

summary_callback = SummaryCallback()

analysis_interval = 100
analysis_callback = AnalysisCallback(semi, interval = analysis_interval)

alive_callback = AliveCallback(analysis_interval = analysis_interval)

save_solution = SaveSolutionCallback(interval = 100,
save_initial_solution = true,
save_final_solution = true,
solution_variables = cons2prim)

stepsize_callback = StepsizeCallback(cfl = 1.0)

callbacks = CallbackSet(summary_callback,
analysis_callback, alive_callback,
save_solution,
stepsize_callback)

###############################################################################
# create OrdinaryDiffEq's `integrator`

integrator = init(ode,
CarpenterKennedy2N54(williamson_condition=false),
dt=1.0, # will be overwritten by the stepsize_callback
save_everystep=false,
callback=callbacks);

###############################################################################
# Create simulation state

simstate = SimulationState(semi, integrator)

return simstate
end
8 changes: 8 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ if ( NOT T8CODE_FOUND )
list( FILTER EXAMPLES EXCLUDE REGEX "trixi_controller_baroclinic.*" )
endif()

# exemplary external library providing function used to compute source terms
add_library ( source_terms SHARED
source_terms.h
source_terms.c
)
install( TARGETS source_terms )


foreach ( EXAMPLE ${EXAMPLES} )

get_filename_component ( EXAMPLE_EXT ${EXAMPLE} EXT )
Expand Down
27 changes: 27 additions & 0 deletions examples/source_terms.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include <stdio.h>
#include <math.h>

/*
* Example for an external source term evaluation
* Diagonally running wave, taken from Trixi.jl's source_terms_convergence_test
*/
void source_term_wave(const double * u, const double * x, const double t,
const double gamma, double * sourceterm) {
Comment on lines +8 to +9
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we pass in the length of u, x, sourceterm?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And then check on C side before accessing the fields?


const double c = 2.0;
const double A = 0.1;
const double L = 2.0;
const double f = 1.0 / L;
const double omega = 2 * M_PI * f;

const double si = sin(omega * (x[0] + x[1] - t));
const double co = cos(omega * (x[0] + x[1] - t));
const double rho = c + A * si;
const double rho_x = omega * A * co;
const double tmp = (2 * rho - 1) * (gamma - 1);

sourceterm[0] = rho_x;
sourceterm[1] = rho_x * (1 + tmp);
sourceterm[2] = sourceterm[1];
sourceterm[3] = 2 * rho_x * (rho + tmp);
}
2 changes: 2 additions & 0 deletions examples/source_terms.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
void source_term_wave(const double * u, const double * x, const double t,
const double gamma, double * sourceterm);
Loading