gammalooprs/
initialisation.rs1use color_eyre::{Result, config::HookBuilder};
2use spenso::{network::library::symbolic::ETS, symbolica_init::in_symbolica_initializer};
3use symbolica::{activate_oem_license, 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 if option_env!("NO_SYMBOLICA_OEM_LICENSE").is_none() {
21 activate_oem_license!("SYMBOLICA_OEM_KEY_ba2512eb");
22 };
23
24 let (panic, eyre) = HookBuilder::default()
25 .capture_span_trace_by_default(cfg!(debug_assertions))
26 .into_hooks();
27 panic.install();
29 let _ = eyre.install();
31
32 crate::set_interrupt_handler();
34 });
36 init_vakint()?;
38 Ok(())
39}
40
41pub fn test_initialise() -> Result<()> {
42 use crate::utils::tracing::init_test_tracing;
43
44 init_test_tracing();
45 initialise()?;
46 init_vakint()?;
47
48 Ok(())
49}
50
51pub fn bench_initialise() -> Result<()> {
52 use crate::utils::tracing::init_bench_tracing;
53
54 init_bench_tracing();
55 initialise()?;
56 init_vakint()?;
57
58 Ok(())
59}