gammalooprs/
initialisation.rs1use color_eyre::{Result, config::HookBuilder};
2use spenso::{network::library::symbolic::ETS, symbolica_init::in_symbolica_initializer};
3use symbolica::initialize;
4
5use crate::numerator::ufo::UFO;
6use crate::utils::{GS, init_vakint};
7static INITIALISED: std::sync::Once = std::sync::Once::new();
8
9initialize!(|| {
10 in_symbolica_initializer(|| {
11 let _ = ETS.force_in_initializer().delta;
12 let _ = ETS.force_in_initializer().metric;
13 let _ = GS.force_in_initializer();
14 let _ = UFO.force_in_initializer();
15 });
16});
17
18pub fn initialise() -> Result<()> {
19 INITIALISED.call_once(|| {
20 let (panic, eyre) = HookBuilder::default()
21 .capture_span_trace_by_default(cfg!(debug_assertions))
22 .into_hooks();
23 panic.install();
25 let _ = eyre.install();
27
28 crate::set_interrupt_handler();
30 });
32 init_vakint()?;
34 Ok(())
35}
36
37pub fn test_initialise() -> Result<()> {
38 use crate::utils::tracing::init_test_tracing;
39
40 init_test_tracing();
41 initialise()?;
42 init_vakint()?;
43
44 Ok(())
45}
46
47pub fn bench_initialise() -> Result<()> {
48 use crate::utils::tracing::init_bench_tracing;
49
50 init_bench_tracing();
51 initialise()?;
52 init_vakint()?;
53
54 Ok(())
55}