示例#1
0
        //Создает клон значения с указанием времени и добавляет в список
        public Mom AddMomClone(IMom mom, DateTime time)
        {
            var m = CreateMom(time, mom.Error);

            m.CopyValue(mom);
            return(AddMoment(m));
        }
示例#2
0
        //Вычисление значения функции
        public override ISingleVal CalculateSingle(ISingleVal[] par)
        {
            var mpar = new IMom[par.Length];
            var cpar = new bool[par.Length];

            for (int i = 0; i < par.Length; i++)
            {
                cpar[i] = false;
            }

            var  lists = new List <MList>();
            bool isMom = true;

            for (int i = 0; i < par.Length; i++)
            {
                var mom = par[i] as Mom;
                if (mom != null)
                {
                    mpar[i] = mom;
                }
                else
                {
                    isMom = false;
                    var moms = ((MomList)par[i]).Moments;
                    if (moms.Count == 0 && this is ScalarFunction)
                    {
                        return(new MomList(DataType));
                    }
                    lists.Add(new MList(moms, i));
                }
            }
            if (isMom)//Одно значение
            {
                var mres = new MomEdit(DataType, MaxError(mpar));
                MomCalculate(mpar, cpar, mres);
                return(mres.ToMom());
            }
            //Список значений
            var  rlist = new MomList(DataType);
            bool e     = true;

            while (e)
            {
                e = false;
                DateTime ctime = Different.MaxDate;
                foreach (var list in lists)
                {
                    if (list.NextTime < ctime)
                    {
                        ctime = list.NextTime;
                    }
                }
                if (ctime < Different.MaxDate)
                {
                    e = true;
                    for (int i = 0; i < cpar.Length; i++)
                    {
                        cpar[i] = false;
                    }
                    foreach (var list in lists)
                    {
                        if (list.NextTime == ctime)
                        {
                            list.Pos++;
                            cpar[list.Num] = true;
                        }
                        mpar[list.Num] = ((MomList)par[list.Num]).Interpolation(CalcParam.Interpolation, list.Pos, ctime);
                    }
                    var temp = new MomEdit(DataType, ctime, MinError(mpar));
                    if (MomCalculate(mpar, cpar, temp))
                    {
                        rlist.AddMomClone(temp);
                    }
                }
            }
            return(rlist);
        }
示例#3
0
 //Копирует значение из другого мгновенного значения
 internal abstract void CopyValue(IMom mom);
示例#4
0
 internal override void CopyValue(IMom mom)
 {
     Boolean = mom.Boolean;
 }
示例#5
0
 internal override void CopyValue(IMom mom)
 {
     Date = mom.Date;
 }
示例#6
0
 //Копирует значение из другого мгновенного значения
 public void CopyValue(IMom mom)
 {
     Mom.CopyValue(mom);
 }
示例#7
0
 internal override void CopyValue(IMom mom)
 {
     String = mom.String;
 }
示例#8
0
 internal override void CopyValue(IMom mom)
 {
 }
示例#9
0
 internal override void CopyValue(IMom mom)
 {
     Real = mom.Real;
 }
示例#10
0
 internal override void CopyValue(IMom mom)
 {
     Integer = mom.Integer;
 }