use gmsh_ffi::gmsh::{GmshError, Gmsh, GmshOption as Option, Fltk, GmshOption};
fn main() -> Result<(), GmshError> {
let gmsh = Gmsh::new_default()?;
GmshOption::set_number("Mesh.MaxNumThreads1D", 4.0)?;
GmshOption::set_number("Mesh.MaxNumThreads2D", 4.0)?;
GmshOption::set_number("Mesh.MaxNumThreads3D", 4.0)?;
let model = gmsh.add_model("my_model")?;
model.occ().add_box(0.0,0.0,0.0,1.1,1.1,1.1,-1);
model.occ().synchronize()?;
println!("{:?}", model.get_entities(-1));
Option::set_number("Mesh.Algorithm", 6.0)?;
model.mesh().set_size(&model.get_entities(-1)?, 0.1)?;
model.generate_mesh(3)?;
let bnd = model.get_boundary(&[(3,1)], true,true,false);
println!("{:?}", bnd);
Fltk::run(None);
model.write("output.msh")?;
gmsh.finalize()?;
Ok(())
}