/*
 * This code is generated by BioUML FrameWork 
 * for BIOMD0000000151.xml diagram  at 2008.03.20 15:09:40
 */
import biouml.plugins.simulation.ae.NewtonSolver;
import biouml.plugins.simulation.java.JavaBaseModel;
import ru.biosoft.math.MathRoutines;

public class BIOMD0000000151 extends JavaBaseModel
{

/*
 * Write rules to calculate equation parameters
 */


/*
 * Write rules to calculate equation parameters excluding internal variables.
 */
    public void __internalRateVarInitFunc_0(double time, double[] x)
    {
        rate_R1 = cytosol*kf0*cytosol_x1*IL6;
        rate_R10 = cytosol*k10*x[15];
        rate_R11 = cytosol*(kf5*x[64]*x[65] - kr5*x[10]);
        rate_R12 = cytosol*k6*x[10];
        rate_R13 = cytosol*(kf7*x[64]*x[9] - kr7*x[11]);
        rate_R14 = cytosol*(kf9*x[64]*x[14] - kr9*x[15]);
        rate_R15 = cytosol*(kf21*x[19]*x[64] - kr21*x[20]);
        rate_R16 = cytosol*(kf37*x[29] - kr37*x[64]*x[36]);
        rate_R16a = cytosol*(kf39*x[30] - kr39*x[35]*x[64]);
        rate_R17 = cytosol*(kf32*x[31] - kr32*x[34]*x[64]);
        rate_R18 = cytosol*k12*x[17];
        rate_R19 = cytosol*(kf13*x[65]*x[9] - kr13*x[13]);
        rate_R2 = cytosol*kr0*x[59];
        rate_R20 = _cytosol_nucleus_*k17*x[2];
        rate_R21 = cytosol*(kf5*x[65]*x[20] - kr5*x[21]);
        rate_R22 = cytosol*k10*x[22];
        rate_R23 = cytosol*(2*kf8*Math.pow(x[9], 2) - 2*kr8*x[12]);
        rate_R24 = cytosol*(kf11*x[9]*x[16] - kr11*x[17]);
        rate_R25 = cytosol*(kf11*x[12]*x[16] - kr11*x[18]);
        rate_R26 = cytosol*k14*x[12];
        rate_R27 = cytosol*k12*x[18];
        rate_R28 = cytosol*(kf9*x[14]*x[21] - kr9*x[22]);
        rate_R29 = cytosol*Vm*x[36]/(Km + x[36]);
        rate_R3 = cytosol*(kr2*x[62] - kf2*x[59]*x[61]);
        rate_R30 = cytosol*(kf34*x[15] - kr34*x[29]);
        rate_R31 = _cytosol_nucleus_*(kr8*x[0] - kf8*Math.pow(x[1], 2));
        rate_R32 = _cytosol_nucleus_*(kf15*x[3]*x[0] - kr15*x[7]);
        rate_R33 = _cytosol_nucleus_*(kf15*x[3]*x[1] - kr15*x[8]);
        rate_R34 = _cytosol_nucleus_*(kr13*x[4] - kf13*x[1]*x[2]);
        rate_R35 = _cytosol_nucleus_*k16*x[8];
        rate_R36 = _cytosol_nucleus_*k16*x[7];
        rate_R37 = _cytosol_nucleus_*(k18a*x[0]/(k18b + x[0]));
        rate_R38 = _cytosol_nucleus_*k19*x[5];
        rate_R39 = _cytosol_nucleus_*k22*x[6];
        rate_R40 = _cytosol_nucleus_*k20*x[6];
        rate_R41 = cytosol*k23*x[19];
        rate_R42 = cytosol*k23*x[22];
        rate_R43 = cytosol*(kf38*x[24]*x[36] - kr38*x[35]);
        rate_R44 = cytosol*(kf35*x[28] - kr35*x[24]*x[25]);
        rate_R45 = cytosol*(kf24*x[29]*x[24] - kr24*x[30]);
    }
    public void __internalRateVarInitFunc_1(double time, double[] x)
    {
        rate_R46 = cytosol*(kf25*x[25]*x[30] - kr25*x[31]);
        rate_R47 = cytosol*(kf40*x[25]*x[35] - kr40*x[34]);
        rate_R48 = cytosol*(kf26*x[26]*x[31] - kr26*x[32]);
        rate_R49 = cytosol*(kf31*x[33] - kr31*x[26]*x[31]);
        rate_R5 = cytosol*(kf1*cytosol_x3*x[60] - kr1*x[61]);
        rate_R50 = cytosol*(kf27*x[32] - kr27*x[27]*x[31]);
        rate_R51 = cytosol*(kf28*x[27]*x[37] - kr28*x[38]);
        rate_R52 = cytosol*(kf41*x[28]*x[29] - kr41*x[31]);
        rate_R53 = cytosol*(kf33*x[34] - kr33*x[28]*x[36]);
        rate_R54 = cytosol*(kf30*x[39]*x[31] - kr30*x[33]);
        rate_R55 = cytosol*k43*x[42];
        rate_R56 = cytosol*(kf29*x[38] - kr29*x[39]*x[41]);
        rate_R57 = cytosol*(kf42*x[40]*x[41] - kr42*x[42]);
        rate_R58 = cytosol*(kf44*x[41]*x[43] - kr44*x[44]);
        rate_R59 = cytosol*k45*x[44];
        rate_R60 = cytosol*(kf46*x[45]*x[41] - kr46*x[46]);
        rate_R61 = cytosol*k51*x[50];
        rate_R62 = cytosol*k49*x[48];
        rate_R63 = cytosol*(kf50*x[45]*x[49] - kr50*x[50]);
        rate_R64 = cytosol*k47*x[46];
        rate_R65 = cytosol*(kf48*x[47]*x[49] - kr48*x[48]);
        rate_R66 = cytosol*(kf52*x[47]*x[51] - kr52*x[52]);
        rate_R67 = cytosol*k53*x[52];
        rate_R68 = cytosol*(kr54*x[54] - kf54*x[47]*x[53]);
        rate_R69 = cytosol*k55*x[54];
        rate_R7 = cytosol*kf3*Math.pow(x[62], 2);
        rate_R70 = cytosol*k59*x[58];
        rate_R71 = cytosol*k57*x[57];
        rate_R72 = cytosol*(kf58*x[53]*x[56] - kr58*x[58]);
        rate_R73 = cytosol*(kf56*x[55]*x[56] - kr56*x[57]);
        rate_R8 = cytosol*kr3*x[63];
        rate_R9 = cytosol*k4*x[63];
    }

    public void Init()
    {
        initialValues = getInitialValues();
/*
 * Initialize variables
 */
        _cytosol_nucleus_ = 1.0; // initial value of $"cytosol.nucleus"
        cytosol = 1.0; // initial value of $cytosol
        cytosol_x1 = 8.0; // initial value of $cytosol.x1
        cytosol_x3 = 0.8; // initial value of $cytosol.x3
        IL6 = 0.38; // initial value of IL6
        Km = 340.0; // initial value of Km
        Vm = 1.7; // initial value of Vm
        k10 = 0.0030; // initial value of k10
        k12 = 0.0030; // initial value of k12
        k14 = 0.0050; // initial value of k14
        k16 = 0.0050; // initial value of k16
        k17 = 0.05; // initial value of k17
        k18a = 0.01; // initial value of k18a
        k18b = 400.0; // initial value of k18b
        k19 = 0.0010; // initial value of k19
        k20 = 0.01; // initial value of k20
        k22 = 5.0E-4; // initial value of k22
        k23 = 5.0E-4; // initial value of k23
        k4 = 0.0050; // initial value of k4
        k43 = 1.0; // initial value of k43
        k45 = 3.5; // initial value of k45
        k47 = 2.9; // initial value of k47
        k49 = 0.058; // initial value of k49
        k51 = 0.058; // initial value of k51
        k53 = 16.0; // initial value of k53
        k55 = 6.7; // initial value of k55
        k57 = 0.27; // initial value of k57
        k59 = 0.3; // initial value of k59
        k6 = 0.4; // initial value of k6
        kf0 = 0.1; // initial value of kf0
        kf1 = 0.1; // initial value of kf1
        kf11 = 0.0010; // initial value of kf11
        kf13 = 2.0E-7; // initial value of kf13
        kf15 = 0.0010; // initial value of kf15
        kf2 = 0.02; // initial value of kf2
        kf21 = 0.02; // initial value of kf21
        kf24 = 0.01; // initial value of kf24
        kf25 = 0.01; // initial value of kf25
        kf26 = 0.015; // initial value of kf26
        kf27 = 0.5; // initial value of kf27
        kf28 = 0.0010; // initial value of kf28
        kf29 = 1.0; // initial value of kf29
        kf3 = 0.04; // initial value of kf3
        kf30 = 0.0079; // initial value of kf30
        kf31 = 0.023; // initial value of kf31
        kf32 = 0.1; // initial value of kf32
        kf33 = 0.3; // initial value of kf33
        kf34 = 6.0; // initial value of kf34
        kf35 = 0.0015; // initial value of kf35
        kf37 = 0.3; // initial value of kf37
        kf38 = 0.01; // initial value of kf38
        kf39 = 0.3; // initial value of kf39
        kf40 = 0.03; // initial value of kf40
        kf41 = 0.03; // initial value of kf41
        kf42 = 0.0717; // initial value of kf42
        kf44 = 0.011; // initial value of kf44
        kf46 = 0.011; // initial value of kf46
        kf48 = 0.0143; // initial value of kf48
        kf5 = 0.0080; // initial value of kf5
        kf50 = 2.5E-4; // initial value of kf50
        kf52 = 1.1E-4; // initial value of kf52
        kf54 = 1.1E-4; // initial value of kf54
        kf56 = 0.014; // initial value of kf56
        kf58 = 0.0050; // initial value of kf58
        kf7 = 0.0050; // initial value of kf7
        kf8 = 0.02; // initial value of kf8
        kf9 = 0.0010; // initial value of kf9
        kr0 = 0.05; // initial value of kr0
        kr1 = 0.05; // initial value of kr1
        kr11 = 0.2; // initial value of kr11
        kr13 = 0.2; // initial value of kr13
        kr15 = 0.2; // initial value of kr15
        kr2 = 0.02; // initial value of kr2
        kr21 = 0.1; // initial value of kr21
        kr24 = 0.55; // initial value of kr24
        kr25 = 0.0214; // initial value of kr25
        kr26 = 1.3; // initial value of kr26
        kr27 = 1.0E-4; // initial value of kr27
        kr28 = 0.0053; // initial value of kr28
        kr29 = 7.0E-4; // initial value of kr29
        kr3 = 0.2; // initial value of kr3
        kr30 = 0.4; // initial value of kr30
        kr31 = 2.2E-4; // initial value of kr31
        kr32 = 2.45E-4; // initial value of kr32
        kr33 = 0.021; // initial value of kr33
        kr34 = 0.06; // initial value of kr34
        kr35 = 0.0045; // initial value of kr35
        kr37 = 9.0E-4; // initial value of kr37
        kr38 = 0.55; // initial value of kr38
        kr39 = 9.0E-4; // initial value of kr39
        kr40 = 0.064; // initial value of kr40
        kr41 = 0.0429; // initial value of kr41
        kr42 = 0.2; // initial value of kr42
        kr44 = 0.001833; // initial value of kr44
        kr46 = 0.001833; // initial value of kr46
        kr48 = 0.8; // initial value of kr48
        kr5 = 0.8; // initial value of kr5
        kr50 = 0.5; // initial value of kr50
        kr52 = 0.033; // initial value of kr52
        kr54 = 0.033; // initial value of kr54
        kr56 = 0.6; // initial value of kr56
        kr58 = 0.5; // initial value of kr58
        kr7 = 0.5; // initial value of kr7
        kr8 = 0.1; // initial value of kr8
        kr9 = 0.2; // initial value of kr9
    }

    /*
     * Model variables initial values
     */
    protected double _cytosol_nucleus_;
    protected double rate_R1;
    protected double rate_R10;
    protected double rate_R11;
    protected double rate_R12;
    protected double rate_R13;
    protected double rate_R14;
    protected double rate_R15;
    protected double rate_R16;
    protected double rate_R16a;
    protected double rate_R17;
    protected double rate_R18;
    protected double rate_R19;
    protected double rate_R2;
    protected double rate_R20;
    protected double rate_R21;
    protected double rate_R22;
    protected double rate_R23;
    protected double rate_R24;
    protected double rate_R25;
    protected double rate_R26;
    protected double rate_R27;
    protected double rate_R28;
    protected double rate_R29;
    protected double rate_R3;
    protected double rate_R30;
    protected double rate_R31;
    protected double rate_R32;
    protected double rate_R33;
    protected double rate_R34;
    protected double rate_R35;
    protected double rate_R36;
    protected double rate_R37;
    protected double rate_R38;
    protected double rate_R39;
    protected double rate_R40;
    protected double rate_R41;
    protected double rate_R42;
    protected double rate_R43;
    protected double rate_R44;
    protected double rate_R45;
    protected double rate_R46;
    protected double rate_R47;
    protected double rate_R48;
    protected double rate_R49;
    protected double rate_R5;
    protected double rate_R50;
    protected double rate_R51;
    protected double rate_R52;
    protected double rate_R53;
    protected double rate_R54;
    protected double rate_R55;
    protected double rate_R56;
    protected double rate_R57;
    protected double rate_R58;
    protected double rate_R59;
    protected double rate_R60;
    protected double rate_R61;
    protected double rate_R62;
    protected double rate_R63;
    protected double rate_R64;
    protected double rate_R65;
    protected double rate_R66;
    protected double rate_R67;
    protected double rate_R68;
    protected double rate_R69;
    protected double rate_R7;
    protected double rate_R70;
    protected double rate_R71;
    protected double rate_R72;
    protected double rate_R73;
    protected double rate_R8;
    protected double rate_R9;
    protected double cytosol;
    protected double cytosol_x1;
    protected double cytosol_x3;
    protected double IL6;
    protected double Km;
    protected double Vm;
    protected double k10;
    protected double k12;
    protected double k14;
    protected double k16;
    protected double k17;
    protected double k18a;
    protected double k18b;
    protected double k19;
    protected double k20;
    protected double k22;
    protected double k23;
    protected double k4;
    protected double k43;
    protected double k45;
    protected double k47;
    protected double k49;
    protected double k51;
    protected double k53;
    protected double k55;
    protected double k57;
    protected double k59;
    protected double k6;
    protected double kf0;
    protected double kf1;
    protected double kf11;
    protected double kf13;
    protected double kf15;
    protected double kf2;
    protected double kf21;
    protected double kf24;
    protected double kf25;
    protected double kf26;
    protected double kf27;
    protected double kf28;
    protected double kf29;
    protected double kf3;
    protected double kf30;
    protected double kf31;
    protected double kf32;
    protected double kf33;
    protected double kf34;
    protected double kf35;
    protected double kf37;
    protected double kf38;
    protected double kf39;
    protected double kf40;
    protected double kf41;
    protected double kf42;
    protected double kf44;
    protected double kf46;
    protected double kf48;
    protected double kf5;
    protected double kf50;
    protected double kf52;
    protected double kf54;
    protected double kf56;
    protected double kf58;
    protected double kf7;
    protected double kf8;
    protected double kf9;
    protected double kr0;
    protected double kr1;
    protected double kr11;
    protected double kr13;
    protected double kr15;
    protected double kr2;
    protected double kr21;
    protected double kr24;
    protected double kr25;
    protected double kr26;
    protected double kr27;
    protected double kr28;
    protected double kr29;
    protected double kr3;
    protected double kr30;
    protected double kr31;
    protected double kr32;
    protected double kr33;
    protected double kr34;
    protected double kr35;
    protected double kr37;
    protected double kr38;
    protected double kr39;
    protected double kr40;
    protected double kr41;
    protected double kr42;
    protected double kr44;
    protected double kr46;
    protected double kr48;
    protected double kr5;
    protected double kr50;
    protected double kr52;
    protected double kr54;
    protected double kr56;
    protected double kr58;
    protected double kr7;
    protected double kr8;
    protected double kr9;

    public double[] extendResult(double time,double [] x)
    {
        this.time = time;


        double[] y = new double[66];
        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[42];
        y[43] = x[43];
        y[44] = x[44];
        y[45] = x[45];
        y[46] = x[46];
        y[47] = x[47];
        y[48] = x[48];
        y[49] = x[49];
        y[50] = x[50];
        y[51] = x[51];
        y[52] = x[52];
        y[53] = x[53];
        y[54] = x[54];
        y[55] = x[55];
        y[56] = x[56];
        y[57] = x[57];
        y[58] = x[58];
        y[59] = x[59];
        y[60] = x[60];
        y[61] = x[61];
        y[62] = x[62];
        y[63] = x[63];
        y[64] = x[64];
        y[65] = x[65];
        return y;
    }
    public double[] getInitialValues()
    {
        double [] x = new double[66];
        this.time = 0.0;
        x[0] = 0.0; // - $"cytosol.nucleus.x20"
        x[1] = 0.0; // - $"cytosol.nucleus.x21"
        x[2] = 0.0; // - $"cytosol.nucleus.x22"
        x[3] = 60.0; // - $"cytosol.nucleus.x23"
        x[4] = 0.0; // - $"cytosol.nucleus.x24"
        x[5] = 0.0; // - $"cytosol.nucleus.x25"
        x[6] = 0.0; // - $"cytosol.nucleus.x26"
        x[7] = 0.0; // - $"cytosol.nucleus.x27"
        x[8] = 0.0; // - $"cytosol.nucleus.x28"
        x[9] = 0.0; // - $"cytosol.x10"
        x[10] = 0.0; // - $"cytosol.x11"
        x[11] = 0.0; // - $"cytosol.x12"
        x[12] = 0.0; // - $"cytosol.x13"
        x[13] = 0.0; // - $"cytosol.x14"
        x[14] = 100.0; // - $"cytosol.x15"
        x[15] = 0.0; // - $"cytosol.x16"
        x[16] = 50.0; // - $"cytosol.x17"
        x[17] = 0.0; // - $"cytosol.x18"
        x[18] = 0.0; // - $"cytosol.x19"
        x[19] = 0.0; // - $"cytosol.x29"
        x[20] = 0.0; // - $"cytosol.x30"
        x[21] = 0.0; // - $"cytosol.x31"
        x[22] = 0.0; // - $"cytosol.x32"
        x[23] = 0.0; // - $"cytosol.x33"
        x[24] = 85.0; // - $"cytosol.x34"
        x[25] = 34.0; // - $"cytosol.x35"
        x[26] = 19000.0; // - $"cytosol.x36"
        x[27] = 0.0; // - $"cytosol.x37"
        x[28] = 0.0; // - $"cytosol.x38"
        x[29] = 0.0; // - $"cytosol.x39"
        x[30] = 0.0; // - $"cytosol.x40"
        x[31] = 0.0; // - $"cytosol.x41"
        x[32] = 0.0; // - $"cytosol.x42"
        x[33] = 0.0; // - $"cytosol.x43"
        x[34] = 0.0; // - $"cytosol.x44"
        x[35] = 0.0; // - $"cytosol.x45"
        x[36] = 0.0; // - $"cytosol.x46"
        x[37] = 67.0; // - $"cytosol.x47"
        x[38] = 0.0; // - $"cytosol.x48"
        x[39] = 0.0; // - $"cytosol.x49"
        x[40] = 67.0; // - $"cytosol.x50"
        x[41] = 0.0; // - $"cytosol.x51"
        x[42] = 0.0; // - $"cytosol.x52"
        x[43] = 41667.0; // - $"cytosol.x53"
        x[44] = 0.0; // - $"cytosol.x54"
        x[45] = 0.0; // - $"cytosol.x55"
        x[46] = 0.0; // - $"cytosol.x56"
        x[47] = 0.0; // - $"cytosol.x57"
        x[48] = 0.0; // - $"cytosol.x58"
        x[49] = 67.0; // - $"cytosol.x59"
        x[50] = 0.0; // - $"cytosol.x60"
        x[51] = 35000.0; // - $"cytosol.x61"
        x[52] = 0.0; // - $"cytosol.x62"
        x[53] = 0.0; // - $"cytosol.x63"
        x[54] = 0.0; // - $"cytosol.x64"
        x[55] = 0.0; // - $"cytosol.x65"
        x[56] = 16667.0; // - $"cytosol.x66"
        x[57] = 0.0; // - $"cytosol.x67"
        x[58] = 0.0; // - $"cytosol.x68"
        x[59] = 0.0; // - $cytosol.x2
        x[60] = 12.0; // - $cytosol.x4
        x[61] = 0.0; // - $cytosol.x5
        x[62] = 0.0; // - $cytosol.x6
        x[63] = 0.0; // - $cytosol.x7
        x[64] = 0.0; // - $cytosol.x8
        x[65] = 1000.0; // - $cytosol.x9

        __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)
    {

        __internalRateVarInitFunc_0(time, x);
        __internalRateVarInitFunc_1(time, x);

    }

        /*
         * calculate dy/dt for 'BIOMD0000000151.xml' model
         */
    public void __internalDyDt_0(double time, double [] x, double[] result)
    {
        result[0] = +rate_R26-rate_R31-rate_R32;
        result[1] = +rate_R31*2-rate_R33+rate_R34;
        result[2] = -rate_R20+rate_R34+rate_R35;
        result[3] = -rate_R32-rate_R33+rate_R35+rate_R36;
        result[4] = -rate_R34+rate_R36;
        result[5] = +rate_R37-rate_R38;
        result[6] = +rate_R38-rate_R39;
        result[7] = +rate_R32-rate_R36;
        result[8] = +rate_R33-rate_R35;
        result[9] = +rate_R12-rate_R13-rate_R19-rate_R23-rate_R24;
        result[10] = +rate_R11-rate_R12;
        result[11] = +rate_R13;
        result[12] = +rate_R23*0.5-rate_R25-rate_R26;
        result[13] = +rate_R19+rate_R27;
        result[14] = +rate_R10-rate_R14+rate_R22-rate_R28+rate_R29;
        result[15] = -rate_R10+rate_R14-rate_R30;
        result[16] = +rate_R18-rate_R24-rate_R25+rate_R27;
        result[17] = -rate_R18+rate_R24;
        result[18] = +rate_R25-rate_R27;
        result[19] = -rate_R15+rate_R22+rate_R40-rate_R41+rate_R42;
        result[20] = +rate_R15-rate_R21;
        result[21] = +rate_R21-rate_R28;
        result[22] = -rate_R22+rate_R28-rate_R42;
        result[23] = +rate_R42;
        result[24] = -rate_R43+rate_R44-rate_R45;
        result[25] = +rate_R44-rate_R46-rate_R47;
        result[26] = -rate_R48+rate_R49;
        result[27] = +rate_R50-rate_R51;
        result[28] = -rate_R44-rate_R52+rate_R53;
        result[29] = -rate_R16+rate_R30-rate_R45-rate_R52;
        result[30] = -rate_R16a+rate_R45-rate_R46;
        result[31] = -rate_R17+rate_R46-rate_R48+rate_R49+rate_R50+rate_R52-rate_R54;
        result[32] = +rate_R48-rate_R50;
        result[33] = -rate_R49+rate_R54;
        result[34] = +rate_R17+rate_R47-rate_R53;
        result[35] = +rate_R16a+rate_R43-rate_R47;
        result[36] = +rate_R16-rate_R29-rate_R43+rate_R53;
        result[37] = -rate_R51+rate_R55;
        result[38] = +rate_R51-rate_R56;
        result[39] = -rate_R54+rate_R56;
        result[40] = +rate_R55-rate_R57;
        result[41] = +rate_R56-rate_R57-rate_R58+rate_R59-rate_R60+rate_R64;
        result[42] = -rate_R55+rate_R57;
        result[43] = -rate_R58+rate_R61;
        result[44] = +rate_R58-rate_R59;
        result[45] = +rate_R59-rate_R60+rate_R62-rate_R63;
        result[46] = +rate_R60-rate_R64;
        result[47] = +rate_R64-rate_R65-rate_R66+rate_R67+rate_R68+rate_R69;
        result[48] = -rate_R62+rate_R65;
        result[49] = +rate_R61+rate_R62-rate_R63-rate_R65;
        result[50] = -rate_R61+rate_R63;
        result[51] = -rate_R66+rate_R70;
        result[52] = +rate_R66-rate_R67;
        result[53] = +rate_R67+rate_R68+rate_R71-rate_R72;
        result[54] = -rate_R68-rate_R69;
        result[55] = +rate_R69-rate_R73;
        result[56] = +rate_R70+rate_R71-rate_R72-rate_R73;
        result[57] = -rate_R71+rate_R73;
        result[58] = -rate_R70+rate_R72;
        result[59] = +rate_R1-rate_R2+rate_R3;
        result[60] = -rate_R5;
        result[61] = +rate_R3+rate_R5;
        result[62] = -rate_R3-rate_R7*2+rate_R8*2;
        result[63] = +rate_R10+rate_R22+rate_R7-rate_R8-rate_R9;
        result[64] = -rate_R11+rate_R12-rate_R13-rate_R14-rate_R15+rate_R16+rate_R16a+rate_R17+rate_R9;
        result[65] = -rate_R11+rate_R18-rate_R19+rate_R20-rate_R21+rate_R22;
    }
    protected double [] calculateResult(double time, double[] x)
    {
        double[] result = new double[66];
        __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 ...