public DVSTEP() { #region Initialization Common Blocks CommonBlock DVOD01 = new CommonBlock(48, 33, 0, 0); CommonBlock DVOD02 = new CommonBlock(1, 8, 0, 0); #endregion Initialization Common Blocks #region Dependencies (Initialization) DVNORM dvnorm = new DVNORM(); DAXPY daxpy = new DAXPY(); DSCAL dscal = new DSCAL(); DCOPY dcopy = new DCOPY(); DVSET dvset = new DVSET(DVOD01); DVJUST dvjust = new DVJUST(daxpy, DVOD01); #endregion Dependencies (Initialization) #region Set Dependencies this._dvnorm = dvnorm; this._dvjust = dvjust; this._dscal = dscal; this._dvset = dvset; this._daxpy = daxpy; this._dcopy = dcopy; #endregion Set Dependencies #region Data Initialization //KFC/-3 KFC = -3; //KFH/-7 KFH = -7; //MXNCF/10 MXNCF = 10; //ADDON/1.0D-6 ADDON = 1.0E-6; //BIAS1/6.0D0 BIAS1 = 6.0E0; //BIAS2/6.0D0 BIAS2 = 6.0E0; //BIAS3/10.0D0 BIAS3 = 10.0E0; //ETACF/0.25D0 ETACF = 0.25E0; //ETAMIN/0.1D0 ETAMIN = 0.1E0; //ETAMXF/0.2D0 ETAMXF = 0.2E0; //ETAMX1/1.0D4 ETAMX1 = 1.0E4; //ETAMX2/10.0D0 ETAMX2 = 10.0E0; //ETAMX3/10.0D0 ETAMX3 = 10.0E0; //ONEPSM/1.00001D0 ONEPSM = 1.00001E0; //THRESH/1.5D0 THRESH = 1.5E0; //ONE/1.0D0 ONE = 1.0E0; //ZERO/0.0D0 ZERO = 0.0E0; #endregion Data Initialization #region Common varaible Initialization #region Common Block: DVOD01 Initialization this._dvod01 = DVOD01; ACNRM = DVOD01.doubleData[0]; CCMXJ = DVOD01.doubleData[1]; CONP = DVOD01.doubleData[2]; CRATE = DVOD01.doubleData[3]; DRC = DVOD01.doubleData[4]; //Start Array: EL StartIndex: 5 LastIndex: 17 EL = DVOD01.doubleData; o_el = 4; //o_ = StartIndex-1 //End Array: EL ETA = DVOD01.doubleData[18]; ETAMAX = DVOD01.doubleData[19]; H = DVOD01.doubleData[20]; HMIN = DVOD01.doubleData[21]; HMXI = DVOD01.doubleData[22]; HNEW = DVOD01.doubleData[23]; HSCAL = DVOD01.doubleData[24]; PRL1 = DVOD01.doubleData[25]; RC = DVOD01.doubleData[26]; RL1 = DVOD01.doubleData[27]; //Start Array: TAU StartIndex: 28 LastIndex: 40 TAU = DVOD01.doubleData; o_tau = 27; //o_ = StartIndex-1 //End Array: TAU //Start Array: TQ StartIndex: 41 LastIndex: 45 TQ = DVOD01.doubleData; o_tq = 40; //o_ = StartIndex-1 //End Array: TQ TN = DVOD01.doubleData[46]; UROUND = DVOD01.doubleData[47]; ICF = DVOD01.intData[0]; INIT = DVOD01.intData[1]; IPUP = DVOD01.intData[2]; JCUR = DVOD01.intData[3]; JSTART = DVOD01.intData[4]; JSV = DVOD01.intData[5]; KFLAG = DVOD01.intData[6]; KUTH = DVOD01.intData[7]; L = DVOD01.intData[8]; LMAX = DVOD01.intData[9]; LYH = DVOD01.intData[10]; LEWT = DVOD01.intData[11]; LACOR = DVOD01.intData[12]; LSAVF = DVOD01.intData[13]; LWM = DVOD01.intData[14]; LIWM = DVOD01.intData[15]; LOCJS = DVOD01.intData[16]; MAXORD = DVOD01.intData[17]; METH = DVOD01.intData[18]; MITER = DVOD01.intData[19]; MSBJ = DVOD01.intData[20]; MXHNIL = DVOD01.intData[21]; MXSTEP = DVOD01.intData[22]; N = DVOD01.intData[23]; NEWH = DVOD01.intData[24]; NEWQ = DVOD01.intData[25]; NHNIL = DVOD01.intData[26]; NQ = DVOD01.intData[27]; NQNYH = DVOD01.intData[28]; NQWAIT = DVOD01.intData[29]; NSLJ = DVOD01.intData[30]; NSLP = DVOD01.intData[31]; NYH = DVOD01.intData[32]; #endregion Common Block: DVOD01 Initialization #region Common Block: DVOD02 Initialization this._dvod02 = DVOD02; HU = DVOD02.doubleData[0]; NCFN = DVOD02.intData[0]; NETF = DVOD02.intData[1]; NFE = DVOD02.intData[2]; NJE = DVOD02.intData[3]; NLU = DVOD02.intData[4]; NNI = DVOD02.intData[5]; NQU = DVOD02.intData[6]; NST = DVOD02.intData[7]; #endregion Common Block: DVOD02 Initialization #endregion Common varaible Initialization }
public DVODE() { #region Initialization Common Blocks CommonBlock DVOD01 = new CommonBlock(48, 33, 0, 0); CommonBlock DVOD02 = new CommonBlock(1, 8, 0, 0); #endregion Initialization Common Blocks #region Dependencies (Initialization) DVNORM dvnorm = new DVNORM(); DCOPY dcopy = new DCOPY(); DSCAL dscal = new DSCAL(); IDAMAX idamax = new IDAMAX(); DAXPY daxpy = new DAXPY(); DDOT ddot = new DDOT(); DUMSUM dumsum = new DUMSUM(); DEWSET dewset = new DEWSET(); IUMACH iumach = new IUMACH(); DVSET dvset = new DVSET(DVOD01); DGEFA dgefa = new DGEFA(idamax, dscal, daxpy); DACOPY dacopy = new DACOPY(dcopy); DGBFA dgbfa = new DGBFA(idamax, dscal, daxpy); DVJAC dvjac = new DVJAC(dvnorm, dcopy, dscal, dgefa, dacopy, dgbfa, DVOD01, DVOD02); DGESL dgesl = new DGESL(ddot, daxpy); DGBSL dgbsl = new DGBSL(ddot, daxpy); DVSOL dvsol = new DVSOL(dgesl, dgbsl, DVOD01); DVNLSD dvnlsd = new DVNLSD(dvnorm, dcopy, dvjac, dvsol, dscal, daxpy, DVOD01, DVOD02); DUMACH dumach = new DUMACH(dumsum); DVHIN dvhin = new DVHIN(dvnorm); IXSAV ixsav = new IXSAV(iumach); XERRWD xerrwd = new XERRWD(ixsav); DVINDY dvindy = new DVINDY(dscal, xerrwd, DVOD01, DVOD02); DVJUST dvjust = new DVJUST(daxpy, DVOD01); DVSTEP dvstep = new DVSTEP(dvnorm, dvjust, dscal, dvset, daxpy, dcopy, DVOD01, DVOD02); #endregion Dependencies (Initialization) #region Set Dependencies this._dvnlsd = dvnlsd; this._dumach = dumach; this._dvnorm = dvnorm; this._dcopy = dcopy; this._dewset = dewset; this._dvhin = dvhin; this._dscal = dscal; this._dvindy = dvindy; this._xerrwd = xerrwd; this._dvstep = dvstep; #endregion Set Dependencies #region Data Initialization //MORD(1)/12 MORD[1 + o_mord] = 12; //MORD(2)/5 MORD[2 + o_mord] = 5; //MXSTP0/500 MXSTP0 = 500; //MXHNL0/10 MXHNL0 = 10; //ZERO/0.0D0 ZERO = 0.0E0; //ONE/1.0D0 ONE = 1.0E0; //TWO/2.0D0 TWO = 2.0E0; //FOUR/4.0D0 FOUR = 4.0E0; //PT2/0.2D0 PT2 = 0.2E0; //HUN/100.0D0 HUN = 100.0E0; #endregion Data Initialization #region Common varaible Initialization #region Common Block: DVOD01 Initialization this._dvod01 = DVOD01; ACNRM = DVOD01.doubleData[0]; CCMXJ = DVOD01.doubleData[1]; CONP = DVOD01.doubleData[2]; CRATE = DVOD01.doubleData[3]; DRC = DVOD01.doubleData[4]; //Start Array: EL StartIndex: 5 LastIndex: 17 EL = DVOD01.doubleData; o_el = 4; //o_ = StartIndex-1 //End Array: EL ETA = DVOD01.doubleData[18]; ETAMAX = DVOD01.doubleData[19]; H = DVOD01.doubleData[20]; HMIN = DVOD01.doubleData[21]; HMXI = DVOD01.doubleData[22]; HNEW = DVOD01.doubleData[23]; HSCAL = DVOD01.doubleData[24]; PRL1 = DVOD01.doubleData[25]; RC = DVOD01.doubleData[26]; RL1 = DVOD01.doubleData[27]; //Start Array: TAU StartIndex: 28 LastIndex: 40 TAU = DVOD01.doubleData; o_tau = 27; //o_ = StartIndex-1 //End Array: TAU //Start Array: TQ StartIndex: 41 LastIndex: 45 TQ = DVOD01.doubleData; o_tq = 40; //o_ = StartIndex-1 //End Array: TQ TN = DVOD01.doubleData[46]; UROUND = DVOD01.doubleData[47]; ICF = DVOD01.intData[0]; INIT = DVOD01.intData[1]; IPUP = DVOD01.intData[2]; JCUR = DVOD01.intData[3]; JSTART = DVOD01.intData[4]; JSV = DVOD01.intData[5]; KFLAG = DVOD01.intData[6]; KUTH = DVOD01.intData[7]; L = DVOD01.intData[8]; LMAX = DVOD01.intData[9]; LYH = DVOD01.intData[10]; LEWT = DVOD01.intData[11]; LACOR = DVOD01.intData[12]; LSAVF = DVOD01.intData[13]; LWM = DVOD01.intData[14]; LIWM = DVOD01.intData[15]; LOCJS = DVOD01.intData[16]; MAXORD = DVOD01.intData[17]; METH = DVOD01.intData[18]; MITER = DVOD01.intData[19]; MSBJ = DVOD01.intData[20]; MXHNIL = DVOD01.intData[21]; MXSTEP = DVOD01.intData[22]; N = DVOD01.intData[23]; NEWH = DVOD01.intData[24]; NEWQ = DVOD01.intData[25]; NHNIL = DVOD01.intData[26]; NQ = DVOD01.intData[27]; NQNYH = DVOD01.intData[28]; NQWAIT = DVOD01.intData[29]; NSLJ = DVOD01.intData[30]; NSLP = DVOD01.intData[31]; NYH = DVOD01.intData[32]; #endregion Common Block: DVOD01 Initialization #region Common Block: DVOD02 Initialization this._dvod02 = DVOD02; HU = DVOD02.doubleData[0]; NCFN = DVOD02.intData[0]; NETF = DVOD02.intData[1]; NFE = DVOD02.intData[2]; NJE = DVOD02.intData[3]; NLU = DVOD02.intData[4]; NNI = DVOD02.intData[5]; NQU = DVOD02.intData[6]; NST = DVOD02.intData[7]; #endregion Common Block: DVOD02 Initialization #endregion Common varaible Initialization }