pub static SQRTETA: f64 = 1.4901161193847656e-08;
pub static ETA: f64 = 2.2204460492503131e-16;
#[derive(Debug, Default, Clone)]
pub struct LSODACommon {
pub yh: Vec<Vec<f64>>,
pub wm: Vec<Vec<f64>>,
pub ewt: Vec<f64>,
pub savf: Vec<f64>,
pub acor: Vec<f64>,
pub ipvt: Vec<f64>,
pub h: f64,
pub hu: f64,
pub rc: f64,
pub tn: f64,
pub tsw: f64,
pub pdnorm: f64,
pub crate_: f64,
pub el: [f64; 14],
pub elco: [[f64; 14]; 13],
pub tesco: [[f64; 4]; 13],
pub hold: f64,
pub rmax: f64,
pub pdest: f64,
pub pdlast: f64,
pub ialth: usize,
pub ipup: usize,
pub nslp: usize,
pub icount: usize,
pub irflag: usize,
pub imxer: usize,
pub illin: usize,
pub nhnil: usize,
pub nslast: usize,
pub jcur: usize,
pub meth: usize,
pub mused: usize,
pub nq: usize,
pub nst: usize,
pub ncf: usize,
pub nfe: usize,
pub nje: usize,
pub nqu: usize,
pub miter: usize,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum OdeMethod {
Adam,
BDF,
}
impl Default for OdeMethod {
fn default() -> Self {
Self::Adam
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum IStateInput {
InitialCall,
ParamChange,
ParamNotChange,
}
impl Default for IStateInput {
fn default() -> Self {
Self::InitialCall
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum IStateOutput {
DoNothing,
IntegrationSuccess,
ExcessiveAmt,
TooMuchAccuracy,
IllegalInput,
RepTestFailure,
RepConvFailure,
EWTiZero,
IRWorkTooShort,
}
impl Default for IStateOutput {
fn default() -> Self {
Self::DoNothing
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ITask {
NormalComputation,
SingleStep,
StopAtFirstMeshPoint,
NormalComputationWithoutTCrit,
SingleStepWithoutTCrit,
}
impl Default for ITask {
fn default() -> Self {
Self::NormalComputation
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ITol {
SingleRtolSingleAtol,
SingleRtolMultiAtol,
MultiRtolSingleAtol,
MultiRtolMultiAtol,
}
impl Default for ITol {
fn default() -> Self {
Self::SingleRtolMultiAtol
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum IOpt {
OptionalInputs,
NoOptionalInputs,
}
impl Default for IOpt {
fn default() -> Self {
Self::NoOptionalInputs
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum CorrectionIterMethod {
NoJac,
UserFullJac,
InternalFullJac,
UserBandJac,
InternalBandJac,
}
impl Default for CorrectionIterMethod {
fn default() -> Self {
Self::NoJac
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Ixpr {
NoExtraPrint,
PrintOnSwitch,
}
impl Default for Ixpr {
fn default() -> Self {
Self::NoExtraPrint
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum JStart {
FirstStep,
ContinueStep,
NewParamNextStep,
NewHNextStep,
}
impl Default for JStart {
fn default() -> Self {
Self::FirstStep
}
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum InitializationState {
Done,
NotYet,
}
impl Default for InitializationState {
fn default() -> Self {
InitializationState::Done
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum IFlag {
KTLegal,
IllegalK,
IllegalT,
}
impl Default for IFlag {
fn default() -> Self {
Self::KTLegal
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum KFlag {
StepSuccess,
CouldNotAchieveReqError,
CouldNotAchieveConvergence,
FatalinPJACoSLVS,
MultiFails(u8),
}
impl Default for KFlag {
fn default() -> Self {
Self::StepSuccess
}
}
#[derive(Debug, Default, Clone, Copy)]
pub struct IWork(
pub usize,
pub usize,
pub Ixpr,
pub usize,
pub usize,
pub usize,
pub usize,
);
#[derive(Debug, Default, Clone, Copy)]
pub struct Rworks {
pub tcrit: f64,
pub h0: f64,
pub hmax: f64,
pub hmin: f64,
}