using JuMP, Ipopt, MathOptInterface

# Parameters for initial flow values
Base.@kwdef mutable struct mix_par
    in_T::Float64 = 311.00;
    out_T::Float64 = 381.41;
    H2O_T::Float64 = 423.00;
    carbon_ratio::Float64 = 2.5;
    ini_mix_in::Vector = [113.76022309722791, 0.0, 0.0, 0.0, 1.9483473792214394, 8.869342547202073,
     9.741736896107197, 3.605896642141171, 2.0501267199270368, 5.379765151581587];
end

Base.@kwdef mutable struct prePR_par
    out_T::Float64 = 693.00;
end

Base.@kwdef mutable struct pr_par
    out_T::Float64 = 630.52;
end

Base.@kwdef mutable struct preGHR_par
    out_T::Float64 = 753.0;
end

Base.@kwdef mutable struct ghr_par
    out_T::Float64 = 973.0;
end

Base.@kwdef mutable struct atr_par
    out_T::Float64 = 1323.0;
    nO2_H::Float64 = 22.7;
end

Base.@kwdef mutable struct postATR_par
    out_T::Float64 = 512.79;
end

Base.@kwdef mutable struct itsr_par
    out_T::Float64 = 523.0;
end

Base.@kwdef mutable struct preCond_par
    out_T::Float64 = 313.0;
end

Base.@kwdef mutable struct cond_par
    outPurge_T::Float64 = 313.0;
    outProduct_T::Float64 = 313.0;
    splitratio::Vector = [1.0, 0.001, 1.0, 1.0, 1.0]; # Ideal split ratio, switch later
end

Base.@kwdef mutable struct psa_par
    outPurge_T::Float64 = 313.0;
    outProduct_T::Float64 = 313.0;
    splitratio::Vector = [0.01, 0.01, 0.999, 0.01, 0.01]; # Almost ideal
end