/*
 * This code is generated by BioUML FrameWork 
 * for BIOMD0000000109.xml diagram  at 2008.03.20 15:08:45
 */
import biouml.plugins.simulation.ae.NewtonSolver;
import biouml.plugins.simulation.java.JavaBaseModel;
import ru.biosoft.math.MathRoutines;

public class BIOMD0000000109 extends JavaBaseModel
{

/*
 * Write rules to calculate equation parameters
 */
    private void __internalVarInitFunc_0(double time, double[] x)
    {
        _X_totalYCyclinYD_ = x[38] + x[32] + x[36];
        _X_hyperphosphorylatedYpRb_ = x[47] + x[48];
        _X_activeYCdk2_ = x[19] + x[22];
        _X_totalYEmi1_ = x[41] + x[8];
        _X_ksYCyclinE_ = ks0YCyclinE + ks1YCyclinE*x[40]/(ksMYCyclinE + x[40]);
        _X_ksYCyclinA_ = ks0YCyclinA + ks1YCyclinA*x[40]/(ksMYCyclinA + x[40]);
        _X_ksYEmi1_ = ks0YEmi1 + ks1YEmi1*x[40]/(ksMYEmi1 + x[40]);
        _X_ksYE2F_ = ks0YE2F + ks1YE2F*x[40]/(ksMYE2F + x[40]);
        _X_totalYCyclinYE_ = x[39] + x[16] + x[19] + x[26] + x[29];
        _X_totalYCyclinYA_ = x[37] + x[10] + x[12] + x[17] + x[22] + x[27] + x[30];
        _X_totalYp27_ = x[42] + x[35] + x[36] + x[25] + x[26] + x[27] + x[28] + x[29] + x[30];
        _X_hypophosphorylatedYpRb_ = x[45] + x[46];
    }


/*
 * Write rules to calculate equation parameters excluding internal variables.
 */
    public void __internalRateVarInitFunc_0(double time, double[] x)
    {
        rate_rxnY001 = ksYCyclinD*X;
        rate_rxnY002 = kdYCyclinD*x[38]*X;
        rate_rxnY003 = kdYCyclinD*x[32]*X;
        rate_rxnY004 = kdYCyclinD*x[36]*X;
        rate_rxnY005 = ksYp27*X;
        rate_rxnY006 = kdYp27*x[42]*X;
        rate_rxnY007 = kdYp27*x[35]*X;
        rate_rxnY008 = kdYp27*x[36]*X;
        rate_rxnY009 = kdYp27*x[25]*X;
        rate_rxnY010 = kdYp27*x[26]*X;
        rate_rxnY011 = kdYp27*x[27]*X;
        rate_rxnY012 = kdYp27*x[28]*X;
        rate_rxnY013 = kd1Yp27*x[29]*X;
        rate_rxnY014 = kdYp27*x[30]*X;
        rate_rxnY015 = _X_ksYCyclinE_*X;
        rate_rxnY016 = kdYCyclinE*x[39]*X;
        rate_rxnY017 = kdYCyclinE*x[16]*X;
        rate_rxnY018 = kdYCyclinE*x[26]*X;
        rate_rxnY019 = kdYCyclinE*x[19]*X;
        rate_rxnY020 = kdYCyclinE*x[29]*X;
        rate_rxnY021 = _X_ksYCyclinA_*X;
        rate_rxnY022 = kdYCyclinA*x[37]*X;
        rate_rxnY023 = kdYCyclinA*x[10]*X;
        rate_rxnY024 = kdYCyclinA*x[12]*X;
        rate_rxnY025 = kdYCyclinA*x[17]*X;
        rate_rxnY026 = kdYCyclinA*x[27]*X;
        rate_rxnY027 = kdYCyclinA*x[22]*X;
        rate_rxnY028 = kdYCyclinA*x[30]*X;
        rate_rxnY029 = _X_ksYE2F_*X;
        rate_rxnY030 = kd0YE2F*x[40]*X;
        rate_rxnY031 = kdYE2F*x[44]*X;
        rate_rxnY032 = kdYE2F*x[46]*X;
        rate_rxnY033 = kdYE2F*x[48]*X;
        rate_rxnY034 = _X_ksYEmi1_*X;
        rate_rxnY035 = kdYEmi1*x[41]*X;
        rate_rxnY036 = kdYEmi1*x[8]*X;
        rate_rxnY037 = kbYCyclinDYYCdk4*x[31]*x[38]*X;
        rate_rxnY038 = kuYCyclinDYYCdk4*x[32]*X;
        rate_rxnY039 = kbYCyclinDYYCdk4*x[35]*x[38]*X;
        rate_rxnY040 = kuYCyclinDYYCdk4*x[36]*X;
    }
    public void __internalRateVarInitFunc_1(double time, double[] x)
    {
        rate_rxnY041 = kbYp27YYCdk4*x[31]*x[42]*X;
        rate_rxnY042 = kuYp27YYCdk4*x[35]*X;
        rate_rxnY043 = kbYp27YYCdk4*x[32]*x[42]*X;
        rate_rxnY044 = kuYp27YYCdk4*x[36]*X;
        rate_rxnY045 = kbYp27YYCdk2*x[15]*x[42]*X;
        rate_rxnY046 = kuYp27YYCdk2*x[25]*X;
        rate_rxnY047 = kbYp27YYCdk2*x[16]*x[42]*X;
        rate_rxnY048 = kuYp27YYCdk2*x[26]*X;
        rate_rxnY049 = kbYp27YYCdk2*x[17]*x[42]*X;
        rate_rxnY050 = kuYp27YYCdk2*x[27]*X;
        rate_rxnY051 = kbYp27YYCdk2*x[18]*x[42]*X;
        rate_rxnY052 = kuYp27YYCdk2*x[28]*X;
        rate_rxnY053 = kbYp27YYCdk2*x[19]*x[42]*X;
        rate_rxnY054 = kuYp27YYCdk2*x[29]*X;
        rate_rxnY055 = kbYp27YYCdk2*x[22]*x[42]*X;
        rate_rxnY056 = kuYp27YYCdk2*x[30]*X;
        rate_rxnY057 = kYact*x[15]*X;
        rate_rxnY058 = kYact*x[25]*X;
        rate_rxnY059 = kYact*x[16]*X;
        rate_rxnY060 = kYact*x[26]*X;
        rate_rxnY061 = kYact*x[17]*X;
        rate_rxnY062 = kYact*x[27]*X;
        rate_rxnY063 = kbYCyclinEYYCdk2*x[15]*x[39]*X;
        rate_rxnY064 = kuYCyclinEYYCdk2*x[16]*X;
        rate_rxnY065 = kbYCyclinEYYCdk2*x[25]*x[39]*X;
        rate_rxnY066 = kuYCyclinEYYCdk2*x[26]*X;
        rate_rxnY067 = kbYCyclinEYYCdk2*x[18]*x[39]*X;
        rate_rxnY068 = kuYCyclinEYYCdk2*x[19]*X;
        rate_rxnY069 = kbYCyclinEYYCdk2*x[28]*x[39]*X;
        rate_rxnY070 = kuYCyclinEYYCdk2*x[29]*X;
        rate_rxnY071 = kbYCyclinAYYCdk2*x[15]*x[37]*X;
        rate_rxnY072 = kuYCyclinAYYCdk2*x[17]*X;
        rate_rxnY073 = kbYCyclinAYYCdk2*x[25]*x[37]*X;
        rate_rxnY074 = X*kuYCyclinAYYCdk2*x[27];
        rate_rxnY075 = X*kbYCyclinAYYCdk2*x[18]*x[37];
        rate_rxnY076 = X*kuYCyclinAYYCdk2*x[22];
        rate_rxnY077 = X*kbYCyclinAYYCdk2*x[28]*x[37];
        rate_rxnY078 = X*kuYCyclinAYYCdk2*x[30];
        rate_rxnY079 = X*kYact*x[9];
        rate_rxnY080 = X*kYact*x[10];
    }
    public void __internalRateVarInitFunc_2(double time, double[] x)
    {
        rate_rxnY081 = X*kbYCyclinAYYCdk1*x[9]*x[37];
        rate_rxnY082 = X*kuYCyclinAYYCdk1*x[10];
        rate_rxnY083 = X*kbYCyclinAYYCdk1*x[11]*x[37];
        rate_rxnY084 = X*kuYCyclinAYYCdk1*x[12];
        rate_rxnY085 = X*kbYD4YYpRb*x[43]*x[32];
        rate_rxnY086 = X*kuYD4YYpRb*x[33];
        rate_rxnY087 = X*kupYD4YYpRb*x[33];
        rate_rxnY088 = X*kbYD4YYpRb*x[44]*x[32];
        rate_rxnY089 = X*kuYD4YYpRb*x[34];
        rate_rxnY090 = X*kupYD4YYpRb*x[34];
        rate_rxnY091 = X*kbYE2YYpRb*x[45]*x[19];
        rate_rxnY092 = X*kuYE2YYpRb*x[20];
        rate_rxnY093 = X*kupYE2YYpRb*x[20];
        rate_rxnY094 = X*kbYE2YYpRb*x[46]*x[19];
        rate_rxnY095 = X*kuYE2YYpRb*x[21];
        rate_rxnY096 = X*kupYE2YYpRb*x[21];
        rate_rxnY097 = X*kbYA2YYpRb*x[45]*x[22];
        rate_rxnY098 = X*kuYA2YYpRb*x[23];
        rate_rxnY099 = X*kupYA2YYpRb*x[23];
        rate_rxnY100 = X*kbYA2YYpRb*x[46]*x[22];
        rate_rxnY101 = X*kuYA2YYpRb*x[24];
        rate_rxnY102 = X*kupYA2YYpRb*x[24];
        rate_rxnY103 = X*kbYA1YYpRb*x[45]*x[12];
        rate_rxnY104 = X*kuYA1YYpRb*x[13];
        rate_rxnY105 = X*kupYA1YYpRb*x[13];
        rate_rxnY106 = X*kbYA1YYpRb*x[45]*x[12];
        rate_rxnY107 = X*kuYA1YYpRb*x[14];
        rate_rxnY108 = X*kupYA1YYpRb*x[14];
        rate_rxnY109 = X*ktYpRbYYDephos*x[47];
        rate_rxnY110 = X*ktYpRbYYDephos*x[48];
        rate_rxnY111 = X*kbYE2FYYpRb*x[43]*x[40];
        rate_rxnY112 = X*kuYE2FYYpRb*x[44];
        rate_rxnY113 = X*kbYE2FYYpRb*x[45]*x[40];
        rate_rxnY114 = X*kuYE2FYYpRb*x[46];
        rate_rxnY115 = X*kuYE2FYYpRb*x[48];
        rate_rxnY116 = X*kbYEmi1YYAPCC*x[0]*x[41];
        rate_rxnY117 = X*kuYEmi1YYAPCC*x[8];
        rate_rxnY118 = X*kbYAPCCYYCyclinA*x[37]*x[0];
        rate_rxnY119 = X*kuYAPCCYYCyclinA*x[7];
        rate_rxnY120 = X*kudYAPCCYYCyclinA*x[7];
    }
    public void __internalRateVarInitFunc_3(double time, double[] x)
    {
        rate_rxnY121 = X*kbYAPCCYYCyclinA*x[17]*x[0];
        rate_rxnY122 = X*kuYAPCCYYCyclinA*x[3];
        rate_rxnY123 = X*kudYAPCCYYCyclinA*x[3];
        rate_rxnY124 = X*kbYAPCCYYCyclinA*x[27]*x[0];
        rate_rxnY125 = X*kuYAPCCYYCyclinA*x[5];
        rate_rxnY126 = X*kudYAPCCYYCyclinA*x[5];
        rate_rxnY127 = X*kbYAPCCYYCyclinA*x[27]*x[0];
        rate_rxnY128 = X*kuYAPCCYYCyclinA*x[4];
        rate_rxnY129 = X*kudYAPCCYYCyclinA*x[4];
        rate_rxnY130 = X*kbYAPCCYYCyclinA*x[30]*x[0];
        rate_rxnY131 = X*kuYAPCCYYCyclinA*x[6];
        rate_rxnY132 = X*kudYAPCCYYCyclinA*x[6];
        rate_rxnY133 = X*kbYAPCCYYCyclinA*x[10]*x[0];
        rate_rxnY134 = X*kuYAPCCYYCyclinA*x[1];
        rate_rxnY135 = X*kudYAPCCYYCyclinA*x[1];
        rate_rxnY136 = X*kbYAPCCYYCyclinA*x[12]*x[0];
        rate_rxnY137 = X*kuYAPCCYYCyclinA*x[2];
        rate_rxnY138 = X*kudYAPCCYYCyclinA*x[2];
    }

    public void Init()
    {
        initialValues = getInitialValues();
/*
 * Initialize variables
 */
        X = 1.0; // initial value of $X
        k1Yact = 0.01075; // initial value of k1Yact
        kbYA1YYpRb = 6.73E-5; // initial value of kbYA1YYpRb
        kbYA2YYpRb = 6.25E-5; // initial value of kbYA2YYpRb
        kbYAPCCYYCyclinA = 1.61E-5; // initial value of kbYAPCCYYCyclinA
        kbYCyclinAYYCdk1 = 6.48E-5; // initial value of kbYCyclinAYYCdk1
        kbYCyclinAYYCdk2 = 9.52E-5; // initial value of kbYCyclinAYYCdk2
        kbYCyclinDYYCdk4 = 1.43E-6; // initial value of kbYCyclinDYYCdk4
        kbYCyclinEYYCdk2 = 5.01E-5; // initial value of kbYCyclinEYYCdk2
        kbYD4YYpRb = 3.15E-5; // initial value of kbYD4YYpRb
        kbYE2FYYpRb = 9.66E-6; // initial value of kbYE2FYYpRb
        kbYE2YYpRb = 5.74E-5; // initial value of kbYE2YYpRb
        kbYEmi1YYAPCC = 1.0E-4; // initial value of kbYEmi1YYAPCC
        kbYp27YYCdk2 = 1.23E-5; // initial value of kbYp27YYCdk2
        kbYp27YYCdk4 = 6.34E-6; // initial value of kbYp27YYCdk4
        kd0YE2F = 0.002229; // initial value of kd0YE2F
        kd1Yp27 = 0.071149; // initial value of kd1Yp27
        kdYCyclinA = 0.05; // initial value of kdYCyclinA
        kdYCyclinD = 0.05; // initial value of kdYCyclinD
        kdYCyclinE = 0.05; // initial value of kdYCyclinE
        kdYE2F = 0.006465; // initial value of kdYE2F
        kdYEmi1 = 0.018158; // initial value of kdYEmi1
        kdYp27 = 0.001575; // initial value of kdYp27
        ks0YCyclinA = 499.9437; // initial value of ks0YCyclinA
        ks0YCyclinE = 254.0742; // initial value of ks0YCyclinE
        ks0YE2F = 6.927086; // initial value of ks0YE2F
        ks0YEmi1 = 2.004744; // initial value of ks0YEmi1
        ks1YCyclinA = 7999.996; // initial value of ks1YCyclinA
        ks1YCyclinE = 980.611; // initial value of ks1YCyclinE
        ks1YE2F = 65.44282; // initial value of ks1YE2F
        ks1YEmi1 = 1788.517; // initial value of ks1YEmi1
        ksMYCyclinA = 4064.384; // initial value of ksMYCyclinA
        ksMYCyclinE = 9992.647; // initial value of ksMYCyclinE
        ksMYE2F = 9818.78; // initial value of ksMYE2F
        ksMYEmi1 = 9608.162; // initial value of ksMYEmi1
        ksYCyclinD = 1354.231; // initial value of ksYCyclinD
        ksYp27 = 195.4716; // initial value of ksYp27
        ktYpRbYYDephos = 0.023194; // initial value of ktYpRbYYDephos
        kuYA1YYpRb = 0.1; // initial value of kuYA1YYpRb
        kuYA2YYpRb = 0.1; // initial value of kuYA2YYpRb
        kuYAPCCYYCyclinA = 0.1; // initial value of kuYAPCCYYCyclinA
        kuYCyclinAYYCdk1 = 0.1; // initial value of kuYCyclinAYYCdk1
        kuYCyclinAYYCdk2 = 0.1; // initial value of kuYCyclinAYYCdk2
        kuYCyclinDYYCdk4 = 0.1; // initial value of kuYCyclinDYYCdk4
        kuYCyclinEYYCdk2 = 0.1; // initial value of kuYCyclinEYYCdk2
        kuYD4YYpRb = 0.1; // initial value of kuYD4YYpRb
        kuYE2FYYpRb = 0.1; // initial value of kuYE2FYYpRb
        kuYE2YYpRb = 0.1; // initial value of kuYE2YYpRb
        kuYEmi1YYAPCC = 0.1; // initial value of kuYEmi1YYAPCC
        kuYp27YYCdk2 = 0.1; // initial value of kuYp27YYCdk2
        kuYp27YYCdk4 = 0.1; // initial value of kuYp27YYCdk4
        kudYAPCCYYCyclinA = 4.999555; // initial value of kudYAPCCYYCyclinA
        kupYA1YYpRb = 0.202132; // initial value of kupYA1YYpRb
        kupYA2YYpRb = 0.200091; // initial value of kupYA2YYpRb
        kupYD4YYpRb = 1.694662; // initial value of kupYD4YYpRb
        kupYE2YYpRb = 4.78271; // initial value of kupYE2YYpRb
    }

    /*
     * Model variables initial values
     */
    protected double _X_activeYCdk2_;
    protected double _X_hyperphosphorylatedYpRb_;
    protected double _X_hypophosphorylatedYpRb_;
    protected double _X_ksYCyclinA_;
    protected double _X_ksYCyclinE_;
    protected double _X_ksYE2F_;
    protected double _X_ksYEmi1_;
    protected double _X_totalYCyclinYA_;
    protected double _X_totalYCyclinYD_;
    protected double _X_totalYCyclinYE_;
    protected double _X_totalYEmi1_;
    protected double _X_totalYp27_;
    protected double rate_rxnY001;
    protected double rate_rxnY002;
    protected double rate_rxnY003;
    protected double rate_rxnY004;
    protected double rate_rxnY005;
    protected double rate_rxnY006;
    protected double rate_rxnY007;
    protected double rate_rxnY008;
    protected double rate_rxnY009;
    protected double rate_rxnY010;
    protected double rate_rxnY011;
    protected double rate_rxnY012;
    protected double rate_rxnY013;
    protected double rate_rxnY014;
    protected double rate_rxnY015;
    protected double rate_rxnY016;
    protected double rate_rxnY017;
    protected double rate_rxnY018;
    protected double rate_rxnY019;
    protected double rate_rxnY020;
    protected double rate_rxnY021;
    protected double rate_rxnY022;
    protected double rate_rxnY023;
    protected double rate_rxnY024;
    protected double rate_rxnY025;
    protected double rate_rxnY026;
    protected double rate_rxnY027;
    protected double rate_rxnY028;
    protected double rate_rxnY029;
    protected double rate_rxnY030;
    protected double rate_rxnY031;
    protected double rate_rxnY032;
    protected double rate_rxnY033;
    protected double rate_rxnY034;
    protected double rate_rxnY035;
    protected double rate_rxnY036;
    protected double rate_rxnY037;
    protected double rate_rxnY038;
    protected double rate_rxnY039;
    protected double rate_rxnY040;
    protected double rate_rxnY041;
    protected double rate_rxnY042;
    protected double rate_rxnY043;
    protected double rate_rxnY044;
    protected double rate_rxnY045;
    protected double rate_rxnY046;
    protected double rate_rxnY047;
    protected double rate_rxnY048;
    protected double rate_rxnY049;
    protected double rate_rxnY050;
    protected double rate_rxnY051;
    protected double rate_rxnY052;
    protected double rate_rxnY053;
    protected double rate_rxnY054;
    protected double rate_rxnY055;
    protected double rate_rxnY056;
    protected double rate_rxnY057;
    protected double rate_rxnY058;
    protected double rate_rxnY059;
    protected double rate_rxnY060;
    protected double rate_rxnY061;
    protected double rate_rxnY062;
    protected double rate_rxnY063;
    protected double rate_rxnY064;
    protected double rate_rxnY065;
    protected double rate_rxnY066;
    protected double rate_rxnY067;
    protected double rate_rxnY068;
    protected double rate_rxnY069;
    protected double rate_rxnY070;
    protected double rate_rxnY071;
    protected double rate_rxnY072;
    protected double rate_rxnY073;
    protected double rate_rxnY074;
    protected double rate_rxnY075;
    protected double rate_rxnY076;
    protected double rate_rxnY077;
    protected double rate_rxnY078;
    protected double rate_rxnY079;
    protected double rate_rxnY080;
    protected double rate_rxnY081;
    protected double rate_rxnY082;
    protected double rate_rxnY083;
    protected double rate_rxnY084;
    protected double rate_rxnY085;
    protected double rate_rxnY086;
    protected double rate_rxnY087;
    protected double rate_rxnY088;
    protected double rate_rxnY089;
    protected double rate_rxnY090;
    protected double rate_rxnY091;
    protected double rate_rxnY092;
    protected double rate_rxnY093;
    protected double rate_rxnY094;
    protected double rate_rxnY095;
    protected double rate_rxnY096;
    protected double rate_rxnY097;
    protected double rate_rxnY098;
    protected double rate_rxnY099;
    protected double rate_rxnY100;
    protected double rate_rxnY101;
    protected double rate_rxnY102;
    protected double rate_rxnY103;
    protected double rate_rxnY104;
    protected double rate_rxnY105;
    protected double rate_rxnY106;
    protected double rate_rxnY107;
    protected double rate_rxnY108;
    protected double rate_rxnY109;
    protected double rate_rxnY110;
    protected double rate_rxnY111;
    protected double rate_rxnY112;
    protected double rate_rxnY113;
    protected double rate_rxnY114;
    protected double rate_rxnY115;
    protected double rate_rxnY116;
    protected double rate_rxnY117;
    protected double rate_rxnY118;
    protected double rate_rxnY119;
    protected double rate_rxnY120;
    protected double rate_rxnY121;
    protected double rate_rxnY122;
    protected double rate_rxnY123;
    protected double rate_rxnY124;
    protected double rate_rxnY125;
    protected double rate_rxnY126;
    protected double rate_rxnY127;
    protected double rate_rxnY128;
    protected double rate_rxnY129;
    protected double rate_rxnY130;
    protected double rate_rxnY131;
    protected double rate_rxnY132;
    protected double rate_rxnY133;
    protected double rate_rxnY134;
    protected double rate_rxnY135;
    protected double rate_rxnY136;
    protected double rate_rxnY137;
    protected double rate_rxnY138;
    protected double X;
    protected double k1Yact;
    protected double kYact;
    protected double kbYA1YYpRb;
    protected double kbYA2YYpRb;
    protected double kbYAPCCYYCyclinA;
    protected double kbYCyclinAYYCdk1;
    protected double kbYCyclinAYYCdk2;
    protected double kbYCyclinDYYCdk4;
    protected double kbYCyclinEYYCdk2;
    protected double kbYD4YYpRb;
    protected double kbYE2FYYpRb;
    protected double kbYE2YYpRb;
    protected double kbYEmi1YYAPCC;
    protected double kbYp27YYCdk2;
    protected double kbYp27YYCdk4;
    protected double kd0YE2F;
    protected double kd1Yp27;
    protected double kdYCyclinA;
    protected double kdYCyclinD;
    protected double kdYCyclinE;
    protected double kdYE2F;
    protected double kdYEmi1;
    protected double kdYp27;
    protected double ks0YCyclinA;
    protected double ks0YCyclinE;
    protected double ks0YE2F;
    protected double ks0YEmi1;
    protected double ks1YCyclinA;
    protected double ks1YCyclinE;
    protected double ks1YE2F;
    protected double ks1YEmi1;
    protected double ksMYCyclinA;
    protected double ksMYCyclinE;
    protected double ksMYE2F;
    protected double ksMYEmi1;
    protected double ksYCyclinD;
    protected double ksYp27;
    protected double ktYpRbYYDephos;
    protected double kuYA1YYpRb;
    protected double kuYA2YYpRb;
    protected double kuYAPCCYYCyclinA;
    protected double kuYCyclinAYYCdk1;
    protected double kuYCyclinAYYCdk2;
    protected double kuYCyclinDYYCdk4;
    protected double kuYCyclinEYYCdk2;
    protected double kuYD4YYpRb;
    protected double kuYE2FYYpRb;
    protected double kuYE2YYpRb;
    protected double kuYEmi1YYAPCC;
    protected double kuYp27YYCdk2;
    protected double kuYp27YYCdk4;
    protected double kudYAPCCYYCyclinA;
    protected double kupYA1YYpRb;
    protected double kupYA2YYpRb;
    protected double kupYD4YYpRb;
    protected double kupYE2YYpRb;
    protected double time;

    public double[] extendResult(double time,double [] x)
    {
        this.time = time;

        __internalVarInitFunc_0(time, x);

        double[] y = new double[62];
        y[0] = x[0];
        y[1] = x[1];
        y[2] = x[2];
        y[3] = x[3];
        y[4] = x[4];
        y[5] = x[5];
        y[6] = x[6];
        y[7] = x[7];
        y[8] = x[8];
        y[9] = x[9];
        y[10] = x[10];
        y[11] = x[11];
        y[12] = x[12];
        y[13] = x[13];
        y[14] = x[14];
        y[15] = x[15];
        y[16] = x[16];
        y[17] = x[17];
        y[18] = x[18];
        y[19] = x[19];
        y[20] = x[20];
        y[21] = x[21];
        y[22] = x[22];
        y[23] = x[23];
        y[24] = x[24];
        y[25] = x[25];
        y[26] = x[26];
        y[27] = x[27];
        y[28] = x[28];
        y[29] = x[29];
        y[30] = x[30];
        y[31] = x[31];
        y[32] = x[32];
        y[33] = x[33];
        y[34] = x[34];
        y[35] = x[35];
        y[36] = x[36];
        y[37] = x[37];
        y[38] = x[38];
        y[39] = x[39];
        y[40] = x[40];
        y[41] = x[41];
        y[42] = _X_activeYCdk2_;
        y[43] = _X_hyperphosphorylatedYpRb_;
        y[44] = _X_hypophosphorylatedYpRb_;
        y[45] = _X_ksYCyclinA_;
        y[46] = _X_ksYCyclinE_;
        y[47] = _X_ksYE2F_;
        y[48] = _X_ksYEmi1_;
        y[49] = x[42];
        y[50] = x[43];
        y[51] = x[44];
        y[52] = x[45];
        y[53] = x[46];
        y[54] = x[47];
        y[55] = x[48];
        y[56] = _X_totalYCyclinYA_;
        y[57] = _X_totalYCyclinYD_;
        y[58] = _X_totalYCyclinYE_;
        y[59] = _X_totalYEmi1_;
        y[60] = _X_totalYp27_;
        y[61] = kYact;
        return y;
    }
    public double[] getInitialValues()
    {
        double [] x = new double[49];
        this.time = 0.0;
        x[0] = 24582.9; // - $"X.APCC"
        x[1] = 104.388; // - $"X.APCCYCdk1Y00YCdk1Y01YInt"
        x[2] = 0.0; // - $"X.APCCYCdk1Y10YCdk1Y11YInt"
        x[3] = 52.8191; // - $"X.APCCYCdk2Y000YCdk2Y002YInt"
        x[4] = 0.0; // - $"X.APCCYCdk2Y010YCdk2Y012YInt"
        x[5] = 90.5091; // - $"X.APCCYCdk2Y100YCdk2Y102YInt"
        x[6] = 0.0; // - $"X.APCCYCdk2Y110YCdk2Y112YInt"
        x[7] = 8.79462; // - $"X.APCCYCyclinAYInt"
        x[8] = 5160.61; // - $"X.APCCYEmi1"
        x[9] = 98550.6; // - $"X.Cdk1Y00"
        x[10] = 1345.01; // - $"X.Cdk1Y01"
        x[11] = 0.0; // - $"X.Cdk1Y10"
        x[12] = 0.0; // - $"X.Cdk1Y11"
        x[13] = 0.0; // - $"X.Cdk1Y11YpRbY10YpRbY20YInt"
        x[14] = 0.0; // - $"X.Cdk1Y11YpRbY11YpRbY21YInt"
        x[15] = 33942.0; // - $"X.Cdk2Y000"
        x[16] = 2176.46; // - $"X.Cdk2Y001"
        x[17] = 680.557; // - $"X.Cdk2Y002"
        x[18] = 0.0; // - $"X.Cdk2Y010"
        x[19] = 0.0; // - $"X.Cdk2Y011"
        x[20] = 0.0; // - $"X.Cdk2Y011YpRbY10YpRbY20YInt"
        x[21] = 0.0; // - $"X.Cdk2Y011YpRbY11YpRbY21YInt"
        x[22] = 0.0; // - $"X.Cdk2Y012"
        x[23] = 0.0; // - $"X.Cdk2Y012YpRbY10YpRbY20YInt"
        x[24] = 0.0; // - $"X.Cdk2Y012YpRbY11YpRbY21YInt"
        x[25] = 58162.0; // - $"X.Cdk2Y100"
        x[26] = 3729.51; // - $"X.Cdk2Y101"
        x[27] = 1166.18; // - $"X.Cdk2Y102"
        x[28] = 0.0; // - $"X.Cdk2Y110"
        x[29] = 0.0; // - $"X.Cdk2Y111"
        x[30] = 0.0; // - $"X.Cdk2Y112"
        x[31] = 46551.9; // - $"X.Cdk4Y00"
        x[32] = 6547.64; // - $"X.Cdk4Y01"
        x[33] = 0.0; // - $"X.Cdk4Y01YpRbY00YpRbY10YInt"
        x[34] = 0.0; // - $"X.Cdk4Y01YpRbY01YpRbY11YInt"
        x[35] = 41117.2; // - $"X.Cdk4Y10"
        x[36] = 5783.23; // - $"X.Cdk4Y11"
        x[37] = 113.316; // - $"X.CyclinA"
        x[38] = 14753.7; // - $"X.CyclinD"
        x[39] = 191.985; // - $"X.CyclinE"
        x[40] = 546.211; // - $"X.E2F"
        x[41] = 248.046; // - $"X.Emi1"
        x[42] = 14150.9; // - $"X.p27"
        x[43] = 30000.0; // - $"X.pRbY00"
        x[44] = 0.0; // - $"X.pRbY01"
        x[45] = 28583.4; // - $"X.pRbY10"
        x[46] = 1416.59; // - $"X.pRbY11"
        x[47] = 0.0; // - $"X.pRbY20"
        x[48] = 0.0; // - $"X.pRbY21"

        __internalVarInitFunc_0(time, x);
        __internalRateVarInitFunc_0(time, x);
        __internalRateVarInitFunc_1(time, x);
        __internalRateVarInitFunc_2(time, x);
        __internalRateVarInitFunc_3(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);
        __internalRateVarInitFunc_2(time, x);
        __internalRateVarInitFunc_3(time, x);

    }

        /*
         * calculate dy/dt for 'BIOMD0000000109.xml' model
         */
    public void __internalDyDt_0(double time, double [] x, double[] result)
    {
        result[0] = +rate_rxnY036-rate_rxnY116+rate_rxnY117-rate_rxnY118+rate_rxnY119+rate_rxnY120-rate_rxnY121+rate_rxnY122+rate_rxnY123-rate_rxnY124+rate_rxnY125+rate_rxnY126-rate_rxnY127+rate_rxnY128+rate_rxnY129-rate_rxnY130+rate_rxnY131+rate_rxnY132-rate_rxnY133-rate_rxnY134+rate_rxnY135-rate_rxnY136-rate_rxnY137+rate_rxnY138;
        result[1] = +rate_rxnY133-rate_rxnY134-rate_rxnY135;
        result[2] = +rate_rxnY136-rate_rxnY137-rate_rxnY138;
        result[3] = +rate_rxnY121-rate_rxnY122-rate_rxnY123;
        result[4] = +rate_rxnY127-rate_rxnY128-rate_rxnY129;
        result[5] = +rate_rxnY124-rate_rxnY125-rate_rxnY126;
        result[6] = +rate_rxnY130-rate_rxnY131-rate_rxnY132;
        result[7] = +rate_rxnY118-rate_rxnY119-rate_rxnY120;
        result[8] = -rate_rxnY036+rate_rxnY116-rate_rxnY117;
        result[9] = +rate_rxnY023-rate_rxnY079-rate_rxnY081+rate_rxnY082+rate_rxnY135;
        result[10] = -rate_rxnY023-rate_rxnY080+rate_rxnY081-rate_rxnY082-rate_rxnY133+rate_rxnY134;
        result[11] = +rate_rxnY024+rate_rxnY079-rate_rxnY083+rate_rxnY084+rate_rxnY138;
        result[12] = -rate_rxnY024+rate_rxnY080+rate_rxnY083-rate_rxnY084-rate_rxnY103+rate_rxnY104+rate_rxnY105-rate_rxnY106+rate_rxnY107+rate_rxnY108-rate_rxnY136+rate_rxnY137;
        result[13] = +rate_rxnY103-rate_rxnY104-rate_rxnY105;
        result[14] = +rate_rxnY106-rate_rxnY107-rate_rxnY108;
        result[15] = +rate_rxnY009+rate_rxnY017+rate_rxnY025-rate_rxnY045+rate_rxnY046-rate_rxnY057-rate_rxnY063+rate_rxnY064-rate_rxnY071+rate_rxnY072+rate_rxnY123;
        result[16] = +rate_rxnY010-rate_rxnY017-rate_rxnY047+rate_rxnY048-rate_rxnY059+rate_rxnY063-rate_rxnY064;
        result[17] = +rate_rxnY011-rate_rxnY025-rate_rxnY049+rate_rxnY050-rate_rxnY061+rate_rxnY071-rate_rxnY072-rate_rxnY121+rate_rxnY122;
        result[18] = +rate_rxnY012+rate_rxnY019+rate_rxnY027-rate_rxnY051+rate_rxnY052+rate_rxnY057-rate_rxnY067+rate_rxnY068-rate_rxnY075+rate_rxnY076+rate_rxnY129;
        result[19] = +rate_rxnY013-rate_rxnY019-rate_rxnY053+rate_rxnY054+rate_rxnY059+rate_rxnY067-rate_rxnY068-rate_rxnY091+rate_rxnY092+rate_rxnY093-rate_rxnY094+rate_rxnY095+rate_rxnY096;
        result[20] = +rate_rxnY091-rate_rxnY092-rate_rxnY093;
        result[21] = +rate_rxnY094-rate_rxnY095-rate_rxnY096;
        result[22] = +rate_rxnY014-rate_rxnY027-rate_rxnY055+rate_rxnY056+rate_rxnY061+rate_rxnY075-rate_rxnY076-rate_rxnY097+rate_rxnY098+rate_rxnY099-rate_rxnY100+rate_rxnY101+rate_rxnY102-rate_rxnY127+rate_rxnY128;
        result[23] = +rate_rxnY097-rate_rxnY098-rate_rxnY099;
        result[24] = +rate_rxnY100-rate_rxnY101-rate_rxnY102;
        result[25] = -rate_rxnY009+rate_rxnY018+rate_rxnY026+rate_rxnY045-rate_rxnY046-rate_rxnY058-rate_rxnY065+rate_rxnY066-rate_rxnY073+rate_rxnY074+rate_rxnY126;
        result[26] = -rate_rxnY010-rate_rxnY018+rate_rxnY047-rate_rxnY048-rate_rxnY060+rate_rxnY065-rate_rxnY066;
        result[27] = -rate_rxnY011-rate_rxnY026+rate_rxnY049-rate_rxnY050-rate_rxnY062+rate_rxnY073-rate_rxnY074-rate_rxnY124+rate_rxnY125;
        result[28] = -rate_rxnY012+rate_rxnY020+rate_rxnY028+rate_rxnY051-rate_rxnY052+rate_rxnY058-rate_rxnY069+rate_rxnY070-rate_rxnY077+rate_rxnY078+rate_rxnY132;
        result[29] = -rate_rxnY013-rate_rxnY020+rate_rxnY053-rate_rxnY054+rate_rxnY060+rate_rxnY069-rate_rxnY070;
        result[30] = -rate_rxnY014-rate_rxnY028+rate_rxnY055-rate_rxnY056+rate_rxnY062+rate_rxnY077-rate_rxnY078-rate_rxnY130+rate_rxnY131;
        result[31] = +rate_rxnY003+rate_rxnY007-rate_rxnY037+rate_rxnY038-rate_rxnY041+rate_rxnY042;
        result[32] = -rate_rxnY003+rate_rxnY008+rate_rxnY037-rate_rxnY038-rate_rxnY043+rate_rxnY044-rate_rxnY085+rate_rxnY086+rate_rxnY087-rate_rxnY088+rate_rxnY089+rate_rxnY090;
        result[33] = +rate_rxnY085-rate_rxnY086-rate_rxnY087;
        result[34] = +rate_rxnY088-rate_rxnY089-rate_rxnY090;
        result[35] = +rate_rxnY004-rate_rxnY007-rate_rxnY039+rate_rxnY040+rate_rxnY041-rate_rxnY042;
        result[36] = -rate_rxnY004-rate_rxnY008+rate_rxnY039-rate_rxnY040+rate_rxnY043-rate_rxnY044;
        result[37] = +rate_rxnY021-rate_rxnY022-rate_rxnY071+rate_rxnY072-rate_rxnY073+rate_rxnY074-rate_rxnY075+rate_rxnY076-rate_rxnY077+rate_rxnY078-rate_rxnY081+rate_rxnY082-rate_rxnY083+rate_rxnY084-rate_rxnY118+rate_rxnY119;
        result[38] = +rate_rxnY001-rate_rxnY002-rate_rxnY037+rate_rxnY038-rate_rxnY039+rate_rxnY040;
        result[39] = +rate_rxnY015-rate_rxnY016-rate_rxnY063+rate_rxnY064-rate_rxnY065+rate_rxnY066-rate_rxnY067+rate_rxnY068-rate_rxnY069+rate_rxnY070;
        result[40] = +rate_rxnY029-rate_rxnY030-rate_rxnY111+rate_rxnY112-rate_rxnY113+rate_rxnY114+rate_rxnY115;
        result[41] = +rate_rxnY034-rate_rxnY035-rate_rxnY116+rate_rxnY117;
        result[42] = +rate_rxnY005-rate_rxnY006-rate_rxnY041+rate_rxnY042-rate_rxnY043+rate_rxnY044-rate_rxnY045+rate_rxnY046-rate_rxnY047+rate_rxnY048-rate_rxnY049+rate_rxnY050-rate_rxnY051+rate_rxnY052-rate_rxnY053+rate_rxnY054-rate_rxnY055+rate_rxnY056;
        result[43] = +rate_rxnY031-rate_rxnY085+rate_rxnY086+rate_rxnY109-rate_rxnY111+rate_rxnY112;
        result[44] = -rate_rxnY031-rate_rxnY088+rate_rxnY089+rate_rxnY110+rate_rxnY111-rate_rxnY112;
        result[45] = +rate_rxnY032+rate_rxnY087-rate_rxnY091+rate_rxnY092-rate_rxnY097+rate_rxnY098-rate_rxnY103+rate_rxnY104-rate_rxnY113+rate_rxnY114;
        result[46] = -rate_rxnY032+rate_rxnY090-rate_rxnY094+rate_rxnY095-rate_rxnY100+rate_rxnY101-rate_rxnY106+rate_rxnY107+rate_rxnY113-rate_rxnY114;
        result[47] = +rate_rxnY033+rate_rxnY093+rate_rxnY099+rate_rxnY105-rate_rxnY109+rate_rxnY115;
        result[48] = -rate_rxnY033+rate_rxnY096+rate_rxnY102+rate_rxnY108-rate_rxnY110-rate_rxnY115;
    }
    protected double [] calculateResult(double time, double[] x)
    {
        double[] result = new double[49];
        __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 );
    }

    public double[] checkEvent(double time, double[] x)
    {
        this.time = time;

        __internalVarInitFunc_0(time, x);
        __internalRateVarInitFunc_0(time, x);
        __internalRateVarInitFunc_1(time, x);
        __internalRateVarInitFunc_2(time, x);
        __internalRateVarInitFunc_3(time, x);

        double [] flags = new double[1];
        flags[0] = (time > 240.0637) ? +1 : -1; //event_1
        return flags;
    }

    public void processEvent(int __internalVar12060041255150, double time, double[] x)
    {
        this.time = time;
        if ( __internalVar12060041255150 == 0) //event_1
        {
            kYact = k1Yact;
        }
    }

} // class ...