Пример #1
0
 public Iδ4 Calculate(
     Iδ4ParameterElementFactory δ4ParameterElementFactory,
     Iδ4Factory δ4Factory,
     Iδ4ParameterElementCalculation δ4ParameterElementCalculation,
     Isrd srd,
     It t,
     IW W,
     Iδ3 δ3,
     Iγ γ)
 {
     return(δ4Factory.Create(
                srd.Value
                .SelectMany(b =>
                            t.GetNthElementsAt(
                                b.dIndexElement.Value.Value.Value,
                                t.GetT() - W.Value.Value.Value + b.dIndexElement.Value.Value.Value,
                                W.Value.Value.Value),
                            (a, b) => Tuple.Create(a.sIndexElement, a.rIndexElement, a.dIndexElement, b))
                .Select(x =>
                        δ4ParameterElementCalculation.Calculate(
                            δ4ParameterElementFactory,
                            x.Item3,
                            x.Item2,
                            x.Item1,
                            x.Item4,
                            t,
                            W,
                            γ,
                            δ3))
                .ToImmutableList()));
 }
Пример #2
0
        public Iδ4ParameterElement Calculate(
            Iδ4ParameterElementFactory δ4ParameterElementFactory,
            IdIndexElement dIndexElement,
            IrIndexElement rIndexElement,
            IsIndexElement sIndexElement,
            ItIndexElement tIndexElement,
            It t,
            IW W,
            Iγ γ,
            Iδ3 δ3)
        {
            Iδ4ParameterElement δ4ParameterElement = null;

            int γSum = 0;

            int δ3Asint = δ3.GetElementAtAsint(
                sIndexElement,
                rIndexElement,
                dIndexElement);

            if (δ3Asint == 0)
            {
                δ4ParameterElement = δ4ParameterElementFactory.Create(
                    sIndexElement,
                    rIndexElement,
                    dIndexElement,
                    tIndexElement,
                    1);
            }
            else
            {
                int δ4 = 1;

                do
                {
                    γSum = t.GetNthElementsAt(
                        dIndexElement.Value.Value.Value,
                        dIndexElement.Value.Value.Value + (δ4 - 1) * W.Value.Value.Value,
                        W.Value.Value.Value)
                           .Select(x => γ.GetElementAtAsint(
                                       rIndexElement,
                                       t.GetElementAt(x.Key)))
                           .Sum();

                    δ4 = δ4 + 1;
                } while (γSum < δ3Asint);

                if (γSum == δ3Asint)
                {
                    δ4ParameterElement = δ4ParameterElementFactory.Create(
                        sIndexElement,
                        rIndexElement,
                        dIndexElement,
                        tIndexElement,
                        δ4 - 1);     // Subtract 1 to account for last iteration of the do-while loop
                }
            }

            return(δ4ParameterElement);
        }
Пример #3
0
        public Iδ4ParameterElementFactory Createδ4ParameterElementFactory()
        {
            Iδ4ParameterElementFactory factory = null;

            try
            {
                factory = new δ4ParameterElementFactory();
            }
            catch (Exception exception)
            {
                this.Log.Error(
                    exception.Message,
                    exception);
            }

            return(factory);
        }