コード例 #1
0
        /// <summary>
        /// Creates an <see cref="IEngineDataItem{T}"/> that stores one value on the gridpoint
        /// where the structure is located.
        /// Adds this <see cref="IEngineDataItem{T}"/> to the <see cref="DataModule"/> for supporting outputting.
        /// Returns an <see cref="IEngineDataReach{T}"/> holding the value to update every timestep.
        /// </summary>
        private EngineDataReach <double> CreateEngineDataReach(Quantity quantity, EngineReach engineReach, GridPoint gridPoint)
        {
            // Grid point index where PowerPlant data belongs - required to get output right
            int[] indexList = new int[] { gridPoint.PointIndex };

            // EngineDataItem that stores data for a single PowerPlant and transfers data to result file
            var engineData = new EngineDataItemAll <double>(_controller.EngineNet, quantity)
            {
                ReachesData = new IEngineDataReach <double> [_controller.EngineNet.Reaches.Count]
            };

            // Add data items to data module
            _controller.EngineNet.DataModule.AddDataItem(engineData);

            // Data for this reach, containing one value at the structure grid point
            var engineDataReach = new EngineDataReach <double>()
            {
                Values    = new double[indexList.Length],
                IndexList = indexList,
            };

            // Register reach data with dataitem
            engineData.ReachesData[engineReach.ReachListIndex] = engineDataReach;

            return(engineDataReach);
        }
コード例 #2
0
        public void Initialize()
        {
            _velocityDataItem = _engineNet.HDModule.DataItems.Velocity(true, true);

            if (_locationSpans.Count == 0)
            {
                UseAllNetwork();
            }
            else
            {
                PopulateLocations(_locationSpans);
            }

            SetResistanceToConstant();

            // Make sure that initial values are determined correctly.
            ChangeBedResistance(_engineNet.EngineTime.TimeN);
        }
コード例 #3
0
        internal DAWaterVolumeChangeCalculator(EngineNet engineNet, IQuantity quantity)
            : base(engineNet, quantity)
        {
            _hdModule = engineNet.HDModule;

            _volPostHd = new EngineDataItemAll <double>(engineNet, new Quantity());
            _volPostHd.SetupDataForNodes(engineNet);
            _volPostHd.SetupDataForReaches(engineNet, (gp) => (gp is HGridPoint));
            _volPostHd.GenericData = new EngineDataGeneric <double>()
            {
                Values = new double[1]
            };

            _volAccumulated = new EngineDataItemAll <double>(engineNet, QuantAccVolChangeDA);
            _volAccumulated.SetupDataForNodes(engineNet);
            _volAccumulated.SetupDataForReaches(engineNet, (gp) => (gp is HGridPoint));
            _volAccumulated.GenericData = new EngineDataGeneric <double>()
            {
                Values = new double[1]
            };
            engineNet.DataModule.AddDataItem(_volAccumulated);
        }