Exemple #1
0
        private void ProcessAllTimeSteps(IDfsFile outputDfs)
        {
            var nTimes = _dfsInput.FileInfo.TimeAxis.NumberOfTimeSteps;
            var nItems = _dfsInput.ItemInfo.Count;

            List <float[]> outdatalist = new List <float[]>();

            int timestep0 = 0;

            for (int item = 1; item <= nItems; ++item)
            {
                var indatatime = _dfsInput.ReadItemTimeStep(item, timestep0);
                var indata     = (float[])indatatime.Data;
                outdatalist.Add(indata);
            }

            // from step 1 and onwards
            for (int timestep = 1; timestep < nTimes; timestep++)
            {
                for (int item = 1; item <= nItems; ++item)
                {
                    var indatatime = _dfsInput.ReadItemTimeStep(item, timestep);
                    var indata     = (float[])indatatime.Data;

                    // sum data
                    outdatalist[item - 1] = outdatalist[item - 1].Zip(indata, (x, y) => x + y).ToArray();
                }
            }

            for (int item = 1; item <= nItems; ++item)
            {
                outdatalist[item - 1] = outdatalist[item - 1].Select(
                    x => x / Convert.ToSingle(nTimes)).ToArray();
                outputDfs.WriteItemTimeStepNext(timestep0, outdatalist[item - 1]);
            }

            // write all steps (the same)
            for (int timestep = 0; timestep < nTimes; timestep++)
            {
                for (int item = 1; item <= nItems; ++item)
                {
                    var indatatime = _dfsInput.ReadItemTimeStep(item, timestep);
                    //outputDfs.WriteItemTimeStepNext(timestep, outdatalist[item - 1]);  // indatatime.Time
                    outputDfs.WriteItemTimeStep(item, timestep, indatatime.Time, outdatalist[item - 1]);  // indatatime.Time
                }
            }
        }