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>();
        }