use arctk::args;
use rand::rngs::ThreadRng;
use std::env::current_dir;
use std::fs::create_dir;
use std::path::PathBuf;
use phase::{run, Data, Model, Parameters};
fn main() {
args!(_bin_path: PathBuf, params_path: PathBuf);
let cwd = current_dir().expect("Failed to determine current working directory");
let (in_dir, out_dir) = (cwd.join("input"), cwd.join("output"));
init_dirs(&in_dir, &out_dir);
let params = Parameters::load(&in_dir.join(¶ms_path));
let model = Model::new(¶ms);
let data = run::multi_thread(params.num_neutrons, params.block_size, &model, my_engine);
println!("SUM >> {}", data.total);
}
fn init_dirs(input: &PathBuf, output: &PathBuf) {
if !input.exists() {
create_dir(&input).expect("Failed to create input directory");
}
if !output.exists() {
create_dir(&output).expect("Failed to create output directory");
}
}
fn my_engine(_n: usize, _rng: &mut ThreadRng, _model: &Model, data: &mut Data) {
data.total += 1;
}