Skip to main content

gammalooprs/
initialisation.rs

1use 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        // println!("Installing panic and eyre hooks");
24        panic.install();
25        // Tests and embedded entry points may have already installed an eyre hook.
26        let _ = eyre.install();
27
28        // println!("Setting up interrupt handler");
29        crate::set_interrupt_handler();
30        // println!("Initialize_reps");
31    });
32    // println!("Initializing Vakint");
33    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}