/*
 * This code is generated by BioUML FrameWork 
 * for BIOMD0000000018.xml diagram  at 2008.03.20 15:03:56
 */
import biouml.plugins.simulation.ae.NewtonSolver;
import biouml.plugins.simulation.java.JavaBaseModel;
import ru.biosoft.math.MathRoutines;

public class BIOMD0000000018 extends JavaBaseModel
{

/*
 * Write rules to calculate equation parameters
 */
    private void __internalVarInitFunc_0(double time, double[] x)
    {
        _ext_cell_FH2b_ = x[7]*x[4]/Keq;
        _ext_cell_DHFRtot_ = _ext_cell_FH2b_ + x[4] + x[11] + x[13] + x[15] + x[17] + x[19];
    }


/*
 * Write rules to calculate equation parameters excluding internal variables.
 */
    public void __internalRateVarInitFunc_0(double time, double[] x)
    {
        rate_AICARsyn = _ext_cell_*AICARsyn_Vm*(_ext_cell_glutamine_/AICARsyn_Km1/(1.0 + _ext_cell_glutamine_/AICARsyn_Km1))*(x[6]/AICARsyn_Km2/(1.0 + x[6]/AICARsyn_Km2));
        rate_ATIC12 = _ext_cell_*(ATIC12_Vm*x[5]*x[0]/(x[0]*x[5] + x[5]*ATIC12_Km2 + (x[0] + ATIC12_Km2)*ATIC12_Km1*(1.0 + x[10]/ATIC12_Ki21 + x[12]/ATIC12_Ki22 + x[14]/ATIC12_Ki23 + x[16]/ATIC12_Ki24 + x[18]/ATIC12_Ki25 + x[7]/ATIC12_Ki1 + x[5]/ATIC12_Ki1f)));
        rate_ATIC7 = _ext_cell_*(ATIC7_Vm*x[3]*x[0]/(x[0]*x[3] + x[3]*ATIC7_Km2 + (x[0] + ATIC7_Km2)*ATIC7_Km1*(1.0 + x[10]/ATIC7_Ki21 + x[12]/ATIC7_Ki22 + x[14]/ATIC7_Ki23 + x[16]/ATIC7_Ki24 + x[18]/ATIC7_Ki25 + x[7]/ATIC7_Ki1 + x[5]/ATIC7_Ki1f)));
        rate_CH2FH4toHCHO = _ext_cell_*CH2FH4toHCHO_hl*x[1];
        rate_DHFRdeg = DHFRdeg_Vm*_ext_cell_*(x[4] + _ext_cell_FH2b_);
        rate_DHFReductase = _ext_cell_*DHFReductase_kter*_ext_cell_FH2b_;
        rate_DHFRfsyn = _ext_cell_*(DHFRfsyn_k0 + DHFRfsyn_k1*_ext_EMTX_);
        rate_FFH2syn = _ext_cell_*FFH2syn_Vm*x[7];
        rate_FH2bdeg = _ext_cell_*FH2bdeg_Vm*_ext_cell_FH2b_;
        rate_FPGS12 = _ext_cell_*FPGS12_Vm*x[10];
        rate_FPGS23 = _ext_cell_*FPGS23_Vm*x[12];
        rate_FPGS34 = _ext_cell_*FPGS34_Vm*x[14];
        rate_FPGS45 = _ext_cell_*FPGS45_Vm*x[16];
        rate_GARFT = _ext_cell_*(GARFT_Vm*x[3]*_ext_cell_GAR_/(_ext_cell_GAR_*x[3] + x[3]*GARFT_Km2 + (_ext_cell_GAR_ + GARFT_Km2)*GARFT_Km1*(1.0 + x[10]/GARFT_Ki21 + x[12]/GARFT_Ki22 + x[14]/GARFT_Ki23 + x[16]/GARFT_Ki24 + x[18]/GARFT_Ki25 + x[7]/GARFT_Ki1 + x[5]/GARFT_Ki1f)));
        rate_GGH21 = _ext_cell_*GGH21_Vm*x[12];
        rate_GGH32 = _ext_cell_*GGH32_Vm*x[14];
        rate_GGH43 = _ext_cell_*GGH43_Vm*x[16];
        rate_GGH54 = _ext_cell_*GGH54_Vm*x[18];
        rate_HCHOtoCH2FH4 = _ext_cell_*HCHOtoCH2FH4_hp*x[8]*x[9];
        rate_HCOOHtoCHOFH4 = _ext_cell_*(HCOOHtoCHOFH4_Vm/((1.0 + HCOOHtoCHOFH4_Km1/x[8])*(1.0 + HCOOHtoCHOFH4_Km2/_ext_cell_ATP_)*(1.0 + HCOOHtoCHOFH4_Km3/_ext_cell_formate_)));
        rate_MTHFD = _ext_cell_*MTHFD_Vm*(x[1]/MTHFD_Km1/(1.0 + x[1]/MTHFD_Km1))*(_ext_cell_NADP_/MTHFD_Km2/(1.0 + _ext_cell_NADP_/MTHFD_Km2));
        rate_MTHFR = _ext_cell_*(MTHFR_Vm*x[1]*_ext_cell_NADPH_/(_ext_cell_NADPH_*x[1] + x[1]*MTHFR_Km2 + (_ext_cell_NADPH_ + MTHFR_Km2)*MTHFR_Km1*(1.0 + x[10]/MTHFR_Ki21 + x[12]/MTHFR_Ki22 + x[14]/MTHFR_Ki23 + x[16]/MTHFR_Ki24 + x[18]/MTHFR_Ki25 + x[7]/MTHFR_Ki1)));
        rate_MTR = _ext_cell_*(MTR_Vm*(_ext_cell_homocysteine_/MTR_Km2/(1.0 + _ext_cell_homocysteine_/MTR_Km2))*(x[2]/MTR_Km1)/(1.0 + x[2]/MTR_Km1));
        rate_MTX1deg = _ext_cell_*MTX1deg_Vm*x[11];
        rate_MTX1export = _ext_cell_*MTX1export_Vm*x[10];
        rate_MTX1off = _ext_cell_*MTX1off_Vm*x[11];
        rate_MTX1on = _ext_cell_*MTX1on_Vm*x[4]*x[10];
        rate_MTX2deg = _ext_cell_*MTX2deg_Vm*x[13];
        rate_MTX2export = _ext_cell_*MTX2export_Vm*x[12];
        rate_MTX2off = _ext_cell_*MTX2off_Vm*x[13];
        rate_MTX2on = _ext_cell_*MTX2on_Vm*x[4]*x[12];
        rate_MTX3deg = _ext_cell_*MTX3deg_Vm*x[15];
        rate_MTX3export = _ext_cell_*MTX3export_Vm*x[14];
        rate_MTX3off = _ext_cell_*MTX3off_Vm*x[15];
        rate_MTX3on = _ext_cell_*MTX3on_Vm*x[4]*x[14];
        rate_MTX4deg = _ext_cell_*MTX4deg_Vm*x[17];
        rate_MTX4export = _ext_cell_*MTX4export_Vm*x[16];
        rate_MTX4off = _ext_cell_*MTX4off_Vm*x[17];
        rate_MTX4on = _ext_cell_*MTX4on_Vm*x[4]*x[16];
        rate_MTX5deg = _ext_cell_*MTX5deg_Vm*x[19];
    }
    public void __internalRateVarInitFunc_1(double time, double[] x)
    {
        rate_MTX5export = _ext_cell_*MTX5export_Vm*x[18];
        rate_MTX5off = _ext_cell_*MTX5off_Vm*x[19];
        rate_MTX5on = _ext_cell_*MTX5on_Vm*x[4]*x[18];
        rate_RFC = ext*(RFC_Vm*_ext_EMTX_/(RFC_Km + _ext_EMTX_));
        rate_SHMT = _ext_cell_*(SHMT_Vm*(_ext_cell_serine_/SHMT_Km2/(1.0 + _ext_cell_serine_/SHMT_Km2))*(x[8]/SHMT_Km1)/(1.0 + x[8]/SHMT_Km1));
        rate_SHMTr = _ext_cell_*(SHMTr_Vm*(_ext_cell_glycine_/SHMTr_Km2/(1.0 + _ext_cell_glycine_/SHMTr_Km2))*(x[1]/SHMTr_Km1)/(1.0 + x[1]/SHMTr_Km1));
        rate_TYMS = _ext_cell_*(TYMS_Vm*x[1]*_ext_cell_dUMP_/(_ext_cell_dUMP_*x[1]*(1.0 + x[10]/TYMS_Ki21 + x[12]/TYMS_Ki22 + x[14]/TYMS_Ki23 + x[16]/TYMS_Ki24 + x[18]/TYMS_Ki25 + x[7]/TYMS_Ki1) + TYMS_Km1*_ext_cell_dUMP_*(x[5]/TYMS_Ki1f*(x[10]/TYMS_Ki21) + (1.0 + x[5]/TYMS_Ki1f)*(1.0 + x[12]/TYMS_Ki22 + x[14]/TYMS_Ki23 + x[16]/TYMS_Ki24 + x[18]/TYMS_Ki25 + x[7]/TYMS_Ki1)) + TYMS_Km1*TYMS_Km2*(1.0 + x[12]/TYMS_Ki22 + x[14]/TYMS_Ki23 + x[16]/TYMS_Ki24 + x[18]/TYMS_Ki25 + x[7]/TYMS_Ki1)));
    }

    public void Init()
    {
        initialValues = getInitialValues();
/*
 * Initialize variables
 */
        _ext_cell_ = 1.0; // initial value of $"ext.cell"
        _ext_cell_ATP_ = 2980.0; // initial value of $"ext.cell.ATP"
        _ext_cell_DHFRtot_ = 0.64; // initial value of $"ext.cell.DHFRtot"
        _ext_cell_FH2b_ = 0.0024; // initial value of $"ext.cell.FH2b"
        _ext_cell_GAR_ = 689.6; // initial value of $"ext.cell.GAR"
        _ext_cell_NADP_ = 6.73; // initial value of $"ext.cell.NADP"
        _ext_cell_NADPH_ = 294.0; // initial value of $"ext.cell.NADPH"
        _ext_cell_dUMP_ = 20.76; // initial value of $"ext.cell.dUMP"
        _ext_cell_formate_ = 500.0; // initial value of $"ext.cell.formate"
        _ext_cell_glutamine_ = 7170.0; // initial value of $"ext.cell.glutamine"
        _ext_cell_glycine_ = 1600.0; // initial value of $"ext.cell.glycine"
        _ext_cell_homocysteine_ = 10.0; // initial value of $"ext.cell.homocysteine"
        _ext_cell_serine_ = 123.3; // initial value of $"ext.cell.serine"
        ext = 1.0; // initial value of $ext
        AICARsyn_Km1 = 100.0; // initial value of AICARsyn_Km1
        AICARsyn_Km2 = 100.0; // initial value of AICARsyn_Km2
        AICARsyn_Vm = 4656.0; // initial value of AICARsyn_Vm
        ATIC12_Ki1 = 2.89; // initial value of ATIC12_Ki1
        ATIC12_Ki1f = 5.5; // initial value of ATIC12_Ki1f
        ATIC12_Ki21 = 40.0; // initial value of ATIC12_Ki21
        ATIC12_Ki22 = 31.5; // initial value of ATIC12_Ki22
        ATIC12_Ki23 = 2.33; // initial value of ATIC12_Ki23
        ATIC12_Ki24 = 3.61; // initial value of ATIC12_Ki24
        ATIC12_Ki25 = 5.89; // initial value of ATIC12_Ki25
        ATIC12_Km1 = 5.3; // initial value of ATIC12_Km1
        ATIC12_Km2 = 24.0; // initial value of ATIC12_Km2
        ATIC12_Vm = 9503.0; // initial value of ATIC12_Vm
        ATIC7_Ki1 = 2.89; // initial value of ATIC7_Ki1
        ATIC7_Ki1f = 5.3; // initial value of ATIC7_Ki1f
        ATIC7_Ki21 = 40.0; // initial value of ATIC7_Ki21
        ATIC7_Ki22 = 31.5; // initial value of ATIC7_Ki22
        ATIC7_Ki23 = 2.33; // initial value of ATIC7_Ki23
        ATIC7_Ki24 = 3.61; // initial value of ATIC7_Ki24
        ATIC7_Ki25 = 5.89; // initial value of ATIC7_Ki25
        ATIC7_Km1 = 5.5; // initial value of ATIC7_Km1
        ATIC7_Km2 = 24.0; // initial value of ATIC7_Km2
        ATIC7_Vm = 31675.0; // initial value of ATIC7_Vm
        CH2FH4toHCHO_hl = 0.3; // initial value of CH2FH4toHCHO_hl
        DHFRdeg_Vm = 0.03; // initial value of DHFRdeg_Vm
        DHFReductase_kter = 2109.4; // initial value of DHFReductase_kter
        DHFRfsyn_k0 = 0.0192; // initial value of DHFRfsyn_k0
        DHFRfsyn_k1 = 0.04416; // initial value of DHFRfsyn_k1
        FFH2syn_Vm = 65.0; // initial value of FFH2syn_Vm
        FH2bdeg_Vm = 0.03; // initial value of FH2bdeg_Vm
        FPGS12_Vm = 0.129; // initial value of FPGS12_Vm
        FPGS23_Vm = 0.369; // initial value of FPGS23_Vm
        FPGS34_Vm = 0.118; // initial value of FPGS34_Vm
        FPGS45_Vm = 0.185; // initial value of FPGS45_Vm
        GARFT_Ki1 = 5.0; // initial value of GARFT_Ki1
        GARFT_Ki1f = 1.0; // initial value of GARFT_Ki1f
        GARFT_Ki21 = 84.0; // initial value of GARFT_Ki21
        GARFT_Ki22 = 60.0; // initial value of GARFT_Ki22
        GARFT_Ki23 = 43.0; // initial value of GARFT_Ki23
        GARFT_Ki24 = 31.0; // initial value of GARFT_Ki24
        GARFT_Ki25 = 22.0; // initial value of GARFT_Ki25
        GARFT_Km1 = 4.9; // initial value of GARFT_Km1
        GARFT_Km2 = 52.0; // initial value of GARFT_Km2
        GARFT_Vm = 4126.0; // initial value of GARFT_Vm
        GGH21_Vm = 0.195; // initial value of GGH21_Vm
        GGH32_Vm = 0.025; // initial value of GGH32_Vm
        GGH43_Vm = 0.031; // initial value of GGH43_Vm
        GGH54_Vm = 0.191; // initial value of GGH54_Vm
        HCHOtoCH2FH4_hp = 23.2; // initial value of HCHOtoCH2FH4_hp
        HCOOHtoCHOFH4_Km1 = 230.0; // initial value of HCOOHtoCHOFH4_Km1
        HCOOHtoCHOFH4_Km2 = 56.0; // initial value of HCOOHtoCHOFH4_Km2
        HCOOHtoCHOFH4_Km3 = 1600.0; // initial value of HCOOHtoCHOFH4_Km3
        HCOOHtoCHOFH4_Vm = 3600.0; // initial value of HCOOHtoCHOFH4_Vm
        Keq = 0.32; // initial value of Keq
        MTHFD_Km1 = 3.0; // initial value of MTHFD_Km1
        MTHFD_Km2 = 21.8; // initial value of MTHFD_Km2
        MTHFD_Vm = 68500.0; // initial value of MTHFD_Vm
        MTHFR_Ki1 = 0.4; // initial value of MTHFR_Ki1
        MTHFR_Ki21 = 59.0; // initial value of MTHFR_Ki21
        MTHFR_Ki22 = 21.3; // initial value of MTHFR_Ki22
        MTHFR_Ki23 = 7.68; // initial value of MTHFR_Ki23
        MTHFR_Ki24 = 2.77; // initial value of MTHFR_Ki24
        MTHFR_Ki25 = 1.0; // initial value of MTHFR_Ki25
        MTHFR_Km1 = 50.0; // initial value of MTHFR_Km1
        MTHFR_Km2 = 50.0; // initial value of MTHFR_Km2
        MTHFR_Vm = 224.8; // initial value of MTHFR_Vm
        MTR_Km1 = 125.0; // initial value of MTR_Km1
        MTR_Km2 = 2900.0; // initial value of MTR_Km2
        MTR_Vm = 22600.0; // initial value of MTR_Vm
        MTX1deg_Vm = 0.03; // initial value of MTX1deg_Vm
        MTX1export_Vm = 4.65; // initial value of MTX1export_Vm
        MTX1off_Vm = 0.42; // initial value of MTX1off_Vm
        MTX1on_Vm = 23100.0; // initial value of MTX1on_Vm
        MTX2deg_Vm = 0.03; // initial value of MTX2deg_Vm
        MTX2off_Vm = 0.42; // initial value of MTX2off_Vm
        MTX2on_Vm = 44300.0; // initial value of MTX2on_Vm
        MTX3deg_Vm = 0.03; // initial value of MTX3deg_Vm
        MTX3export_Vm = 0.063; // initial value of MTX3export_Vm
        MTX3off_Vm = 0.42; // initial value of MTX3off_Vm
        MTX3on_Vm = 85100.0; // initial value of MTX3on_Vm
        MTX4deg_Vm = 0.03; // initial value of MTX4deg_Vm
        MTX4export_Vm = 0.063; // initial value of MTX4export_Vm
        MTX4off_Vm = 0.42; // initial value of MTX4off_Vm
        MTX4on_Vm = 163000.0; // initial value of MTX4on_Vm
        MTX5deg_Vm = 0.03; // initial value of MTX5deg_Vm
        MTX5export_Vm = 0.063; // initial value of MTX5export_Vm
        MTX5off_Vm = 0.42; // initial value of MTX5off_Vm
        MTX5on_Vm = 314000.0; // initial value of MTX5on_Vm
        RFC_Km = 8.2; // initial value of RFC_Km
        RFC_Vm = 82.2; // initial value of RFC_Vm
        SHMT_Km1 = 1.7; // initial value of SHMT_Km1
        SHMT_Km2 = 210.0; // initial value of SHMT_Km2
        SHMT_Vm = 18330.0; // initial value of SHMT_Vm
        SHMTr_Km1 = 3200.0; // initial value of SHMTr_Km1
        SHMTr_Km2 = 10000.0; // initial value of SHMTr_Km2
        SHMTr_Vm = 1.22E7; // initial value of SHMTr_Vm
        TYMS_Ki1 = 3.0; // initial value of TYMS_Ki1
        TYMS_Ki1f = 1.6; // initial value of TYMS_Ki1f
        TYMS_Ki21 = 13.0; // initial value of TYMS_Ki21
        TYMS_Ki22 = 0.08; // initial value of TYMS_Ki22
        TYMS_Ki23 = 0.07; // initial value of TYMS_Ki23
        TYMS_Ki24 = 0.065; // initial value of TYMS_Ki24
        TYMS_Ki25 = 0.047; // initial value of TYMS_Ki25
        TYMS_Km1 = 2.5; // initial value of TYMS_Km1
        TYMS_Km2 = 1.8; // initial value of TYMS_Km2
        TYMS_Vm = 58.0; // initial value of TYMS_Vm
    }

    /*
     * Model variables initial values
     */
    protected double _ext_EMTX_;
    protected double _ext_cell_;
    protected double _ext_cell_ATP_;
    protected double _ext_cell_DHFRtot_;
    protected double _ext_cell_FH2b_;
    protected double _ext_cell_GAR_;
    protected double _ext_cell_NADP_;
    protected double _ext_cell_NADPH_;
    protected double _ext_cell_dUMP_;
    protected double _ext_cell_formate_;
    protected double _ext_cell_glutamine_;
    protected double _ext_cell_glycine_;
    protected double _ext_cell_homocysteine_;
    protected double _ext_cell_serine_;
    protected double rate_AICARsyn;
    protected double rate_ATIC12;
    protected double rate_ATIC7;
    protected double rate_CH2FH4toHCHO;
    protected double rate_DHFRdeg;
    protected double rate_DHFReductase;
    protected double rate_DHFRfsyn;
    protected double rate_FFH2syn;
    protected double rate_FH2bdeg;
    protected double rate_FPGS12;
    protected double rate_FPGS23;
    protected double rate_FPGS34;
    protected double rate_FPGS45;
    protected double rate_GARFT;
    protected double rate_GGH21;
    protected double rate_GGH32;
    protected double rate_GGH43;
    protected double rate_GGH54;
    protected double rate_HCHOtoCH2FH4;
    protected double rate_HCOOHtoCHOFH4;
    protected double rate_MTHFD;
    protected double rate_MTHFR;
    protected double rate_MTR;
    protected double rate_MTX1deg;
    protected double rate_MTX1export;
    protected double rate_MTX1off;
    protected double rate_MTX1on;
    protected double rate_MTX2deg;
    protected double rate_MTX2export;
    protected double rate_MTX2off;
    protected double rate_MTX2on;
    protected double rate_MTX3deg;
    protected double rate_MTX3export;
    protected double rate_MTX3off;
    protected double rate_MTX3on;
    protected double rate_MTX4deg;
    protected double rate_MTX4export;
    protected double rate_MTX4off;
    protected double rate_MTX4on;
    protected double rate_MTX5deg;
    protected double rate_MTX5export;
    protected double rate_MTX5off;
    protected double rate_MTX5on;
    protected double rate_RFC;
    protected double rate_SHMT;
    protected double rate_SHMTr;
    protected double rate_TYMS;
    protected double ext;
    protected double AICARsyn_Km1;
    protected double AICARsyn_Km2;
    protected double AICARsyn_Vm;
    protected double ATIC12_Ki1;
    protected double ATIC12_Ki1f;
    protected double ATIC12_Ki21;
    protected double ATIC12_Ki22;
    protected double ATIC12_Ki23;
    protected double ATIC12_Ki24;
    protected double ATIC12_Ki25;
    protected double ATIC12_Km1;
    protected double ATIC12_Km2;
    protected double ATIC12_Vm;
    protected double ATIC7_Ki1;
    protected double ATIC7_Ki1f;
    protected double ATIC7_Ki21;
    protected double ATIC7_Ki22;
    protected double ATIC7_Ki23;
    protected double ATIC7_Ki24;
    protected double ATIC7_Ki25;
    protected double ATIC7_Km1;
    protected double ATIC7_Km2;
    protected double ATIC7_Vm;
    protected double CH2FH4toHCHO_hl;
    protected double DHFRdeg_Vm;
    protected double DHFReductase_kter;
    protected double DHFRfsyn_k0;
    protected double DHFRfsyn_k1;
    protected double FFH2syn_Vm;
    protected double FH2bdeg_Vm;
    protected double FPGS12_Vm;
    protected double FPGS23_Vm;
    protected double FPGS34_Vm;
    protected double FPGS45_Vm;
    protected double GARFT_Ki1;
    protected double GARFT_Ki1f;
    protected double GARFT_Ki21;
    protected double GARFT_Ki22;
    protected double GARFT_Ki23;
    protected double GARFT_Ki24;
    protected double GARFT_Ki25;
    protected double GARFT_Km1;
    protected double GARFT_Km2;
    protected double GARFT_Vm;
    protected double GGH21_Vm;
    protected double GGH32_Vm;
    protected double GGH43_Vm;
    protected double GGH54_Vm;
    protected double HCHOtoCH2FH4_hp;
    protected double HCOOHtoCHOFH4_Km1;
    protected double HCOOHtoCHOFH4_Km2;
    protected double HCOOHtoCHOFH4_Km3;
    protected double HCOOHtoCHOFH4_Vm;
    protected double Keq;
    protected double MTHFD_Km1;
    protected double MTHFD_Km2;
    protected double MTHFD_Vm;
    protected double MTHFR_Ki1;
    protected double MTHFR_Ki21;
    protected double MTHFR_Ki22;
    protected double MTHFR_Ki23;
    protected double MTHFR_Ki24;
    protected double MTHFR_Ki25;
    protected double MTHFR_Km1;
    protected double MTHFR_Km2;
    protected double MTHFR_Vm;
    protected double MTR_Km1;
    protected double MTR_Km2;
    protected double MTR_Vm;
    protected double MTX1deg_Vm;
    protected double MTX1export_Vm;
    protected double MTX1off_Vm;
    protected double MTX1on_Vm;
    protected double MTX2deg_Vm;
    protected double MTX2export_Vm;
    protected double MTX2off_Vm;
    protected double MTX2on_Vm;
    protected double MTX3deg_Vm;
    protected double MTX3export_Vm;
    protected double MTX3off_Vm;
    protected double MTX3on_Vm;
    protected double MTX4deg_Vm;
    protected double MTX4export_Vm;
    protected double MTX4off_Vm;
    protected double MTX4on_Vm;
    protected double MTX5deg_Vm;
    protected double MTX5export_Vm;
    protected double MTX5off_Vm;
    protected double MTX5on_Vm;
    protected double RFC_Km;
    protected double RFC_Vm;
    protected double SHMT_Km1;
    protected double SHMT_Km2;
    protected double SHMT_Vm;
    protected double SHMTr_Km1;
    protected double SHMTr_Km2;
    protected double SHMTr_Vm;
    protected double TYMS_Ki1;
    protected double TYMS_Ki1f;
    protected double TYMS_Ki21;
    protected double TYMS_Ki22;
    protected double TYMS_Ki23;
    protected double TYMS_Ki24;
    protected double TYMS_Ki25;
    protected double TYMS_Km1;
    protected double TYMS_Km2;
    protected double TYMS_Vm;

    public double[] extendResult(double time,double [] x)
    {
        this.time = time;

        __internalVarInitFunc_0(time, x);

        double[] y = new double[22];
        y[0] = x[0];
        y[1] = x[1];
        y[2] = x[2];
        y[3] = x[3];
        y[4] = x[4];
        y[5] = _ext_cell_DHFRtot_;
        y[6] = x[5];
        y[7] = x[6];
        y[8] = _ext_cell_FH2b_;
        y[9] = x[7];
        y[10] = x[8];
        y[11] = x[9];
        y[12] = x[10];
        y[13] = x[11];
        y[14] = x[12];
        y[15] = x[13];
        y[16] = x[14];
        y[17] = x[15];
        y[18] = x[16];
        y[19] = x[17];
        y[20] = x[18];
        y[21] = x[19];
        return y;
    }
    public double[] getInitialValues()
    {
        double [] x = new double[20];
        this.time = 0.0;
        x[0] = 3.695; // - $"ext.cell.AICAR"
        x[1] = 0.26; // - $"ext.cell.CH2FH4"
        x[2] = 1.63; // - $"ext.cell.CH3FH4"
        x[3] = 1.0; // - $"ext.cell.CHOFH4"
        x[4] = 0.64; // - $"ext.cell.DHFRf"
        x[5] = 3.32E-4; // - $"ext.cell.FFH2"
        x[6] = 16.49; // - $"ext.cell.FGAR"
        x[7] = 0.0012; // - $"ext.cell.FH2f"
        x[8] = 0.46; // - $"ext.cell.FH4"
        x[9] = 0.0074; // - $"ext.cell.HCHO"
        x[10] = 0.0; // - $"ext.cell.MTX1"
        x[11] = 0.0; // - $"ext.cell.MTX1b"
        x[12] = 0.0; // - $"ext.cell.MTX2"
        x[13] = 0.0; // - $"ext.cell.MTX2b"
        x[14] = 0.0; // - $"ext.cell.MTX3"
        x[15] = 0.0; // - $"ext.cell.MTX3b"
        x[16] = 0.0; // - $"ext.cell.MTX4"
        x[17] = 0.0; // - $"ext.cell.MTX4b"
        x[18] = 0.0; // - $"ext.cell.MTX5"
        x[19] = 0.0; // - $"ext.cell.MTX5b"

        __internalVarInitFunc_0(time, x);
        __internalRateVarInitFunc_0(time, x);
        __internalRateVarInitFunc_1(time, x);

        return x;
    }

/*
 * code for algebraic rules calculations
 */

/*
 * end of code for algebraic rules calculations
 */

    protected void calculateRates(double time, double[] x)
    {

        __internalVarInitFunc_0(time, x);
        __internalRateVarInitFunc_0(time, x);
        __internalRateVarInitFunc_1(time, x);

    }

        /*
         * calculate dy/dt for 'BIOMD0000000018.xml' model
         */
    public void __internalDyDt_0(double time, double [] x, double[] result)
    {
        result[0] = +rate_AICARsyn-rate_ATIC12-rate_ATIC7;
        result[1] = -rate_CH2FH4toHCHO+rate_HCHOtoCH2FH4-rate_MTHFD-rate_MTHFR+rate_SHMT-rate_SHMTr-rate_TYMS;
        result[2] = +rate_MTHFR-rate_MTR;
        result[3] = -rate_ATIC7-rate_GARFT+rate_HCOOHtoCHOFH4+rate_MTHFD;
        result[4] = -rate_DHFRdeg+rate_DHFRfsyn+rate_MTX1off-rate_MTX1on+rate_MTX2off-rate_MTX2on+rate_MTX3off-rate_MTX3on+rate_MTX4off-rate_MTX4on+rate_MTX5off-rate_MTX5on;
        result[5] = -rate_ATIC12+rate_FFH2syn;
        result[6] = -rate_AICARsyn+rate_GARFT;
        result[7] = +rate_ATIC12-rate_DHFReductase-rate_FFH2syn+rate_FH2bdeg+rate_TYMS;
        result[8] = +rate_ATIC7+rate_CH2FH4toHCHO+rate_DHFReductase+rate_GARFT-rate_HCHOtoCH2FH4-rate_HCOOHtoCHOFH4+rate_MTR-rate_SHMT+rate_SHMTr;
        result[9] = +rate_CH2FH4toHCHO-rate_HCHOtoCH2FH4;
        result[10] = -rate_FPGS12+rate_GGH21+rate_MTX1deg-rate_MTX1export+rate_MTX1off-rate_MTX1on+rate_RFC;
        result[11] = -rate_MTX1deg-rate_MTX1off+rate_MTX1on;
        result[12] = +rate_FPGS12-rate_FPGS23-rate_GGH21+rate_GGH32+rate_MTX2deg-rate_MTX2export+rate_MTX2off-rate_MTX2on;
        result[13] = -rate_MTX2deg-rate_MTX2off+rate_MTX2on;
        result[14] = +rate_FPGS23-rate_FPGS34-rate_GGH32+rate_GGH43+rate_MTX3deg-rate_MTX3export+rate_MTX3off-rate_MTX3on;
        result[15] = -rate_MTX3deg-rate_MTX3off+rate_MTX3on;
        result[16] = +rate_FPGS34-rate_FPGS45-rate_GGH43+rate_GGH54+rate_MTX4deg-rate_MTX4export+rate_MTX4off-rate_MTX4on;
        result[17] = -rate_MTX4deg-rate_MTX4off+rate_MTX4on;
        result[18] = +rate_FPGS45-rate_GGH54+rate_MTX5deg-rate_MTX5export+rate_MTX5off-rate_MTX5on;
        result[19] = -rate_MTX5deg-rate_MTX5off+rate_MTX5on;
    }
    protected double [] calculateResult(double time, double[] x)
    {
        double[] result = new double[20];
        __internalDyDt_0(time, x, result);
        return result;
    }
    public double[] dy_dt(double time, double[] x)
    {
        this.time = time;
        calculateRates( time,x );

        return calculateResult( time,x );
    }

} // class ...