use sprs::CsMat;
use crate::Result;
use crate::indexed::IndexedNetwork;
use super::ybus::{YbusFlags, build_ybus_with_flags};
use super::{BuildOptions, Scheme, negate_into};
pub fn build_bprime(case: &IndexedNetwork, opts: &BuildOptions) -> Result<CsMat<f64>> {
let flags = YbusFlags {
zero_resistance: matches!(opts.scheme, Scheme::Xb),
zero_charging: true,
unity_taps: true,
zero_shifts: false,
skip_bus_shunts: true,
skip_zero_impedance: opts.skip_zero_impedance,
};
let parts = build_ybus_with_flags(case, flags)?;
Ok(negate_into(parts.b))
}