use crate::kernel::muskingum::MuskingumCungeResult;
#[repr(C)]
#[derive(Default)]
pub struct MuskingumCungeInput {
dt: f32,
qup: f32,
quc: f32,
qdp: f32,
ql: f32,
dx: f32,
bw: f32,
tw: f32,
tw_cc: f32,
n: f32,
n_cc: f32,
cs: f32,
s0: f32,
velp: f32,
depthp: f32,
}
unsafe extern "C" {
pub fn c_binding_c_mc_muskingum_cunge(
input: *const MuskingumCungeInput,
result: *mut MuskingumCungeResult,
);
}
pub fn submuskingcunge(
qup: f32, quc: f32, qdp: f32, ql: f32, dt: f32, so: f32, dx: f32, n: f32, cs: f32, bw: f32, tw: f32, tw_cc: f32, n_cc: f32, depth_p: f32, _calculate_courant: bool, ) -> MuskingumCungeResult {
let input = MuskingumCungeInput {
dt,
qup,
quc,
qdp,
ql,
dx,
bw,
tw,
tw_cc,
n,
n_cc,
cs,
s0: so,
velp: 0.0,
depthp: depth_p,
};
let mut result = MuskingumCungeResult::default();
unsafe {
c_binding_c_mc_muskingum_cunge(&input, &mut result);
}
result
}