public Inv_StraightRayWithConstrain(float[] domain, Inv_SRInfoTable table, List <double> d, InversionParameters inputIP) { if (domain.Length != 4 || inputIP.NX < 1 || inputIP.NZ < 1) { MessageBox.Show("input parameter error in Inv_StraightRay!"); //check if the input } _domain = new float[4]; _domain[0] = domain[0]; _domain[1] = domain[1]; _domain[2] = domain[2]; _domain[3] = domain[3]; _table = table.copy(); _iP = new InversionParameters(inputIP.NX, inputIP.NZ); _iP.CopyFrom(inputIP); conMinX = Vector <double> .Build.Dense(_iP.NX *_iP.NZ, double.MinValue); conMaxX = Vector <double> .Build.Dense(_iP.NX *_iP.NZ, double.MaxValue); CreateConValues(_iP); // build up conMinValue and conMaxValue //MessageBox.Show("After\r\n" + conMaxX.ToString() + "\r\n" + conMinX.ToString()); _initialDiffusivity = d.ToList(); // these initial D in cells are mightbe different _tMeasured = TsGenerator1(_table); // initial travel time _tProcessed = TsGenerator2(_table); // travel time after transition _fRs = DsGenerator(_domain, _iP.NX, _iP.NZ); // construt the elements (rectangles) _result = new List <SIRT_Result_StraightRay>(); }
public Inv_NetworkWithConstrains(float[] domain, Inv_SRInfoTable table, List <double> d, InversionParameters inputIP) { _domain = new float[4]; _domain[0] = domain[0]; _domain[1] = domain[1]; _domain[2] = domain[2]; _domain[3] = domain[3]; _nx = inputIP.NX; _nz = inputIP.NZ; _table = table.copy(); _iP = new InversionParameters(inputIP.NX, inputIP.NZ); _iP.CopyFrom(inputIP); conMinX = Vector <double> .Build.Dense(_iP.NX *_iP.NZ, double.MinValue); conMaxX = Vector <double> .Build.Dense(_iP.NX *_iP.NZ, double.MaxValue); CreateConValues(_iP);// build up conMinValue and conMaxValue _diffusivity = d.ToList(); _tMeasured = TsGenerator1(_table); _tProcessed = TsGenerator2(_table);//已经乘以系数并开方,也就是说是b项//the vector b //MessageBox.Show(_table.F_alpha_d.ToString()); _fRs = DsGenerator(_domain, _nx, _nz); _nodesInv = NodesGenerator8(); _sirt_Res = new List <SIRT_Result>(); }