//Создает клон значения с указанием времени и добавляет в список public Mom AddMomClone(IMom mom, DateTime time) { var m = CreateMom(time, mom.Error); m.CopyValue(mom); return(AddMoment(m)); }
//Вычисление значения функции 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); }
//Копирует значение из другого мгновенного значения internal abstract void CopyValue(IMom mom);
internal override void CopyValue(IMom mom) { Boolean = mom.Boolean; }
internal override void CopyValue(IMom mom) { Date = mom.Date; }
//Копирует значение из другого мгновенного значения public void CopyValue(IMom mom) { Mom.CopyValue(mom); }
internal override void CopyValue(IMom mom) { String = mom.String; }
internal override void CopyValue(IMom mom) { }
internal override void CopyValue(IMom mom) { Real = mom.Real; }
internal override void CopyValue(IMom mom) { Integer = mom.Integer; }