Example #1
0
        private static void InitUnitlessConverters()
        {
            var converters =
                _mUnits.CreateOrGetUnitConverter(StockConverterName.Unitless.ToString());
            var conversionProvider = new NdDualConversionProvider();

            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1D;
            converters.Add("Unitless", conversionProvider);
        }
Example #2
0
        private static void InitVolumetricFlowConverters()
        {
            var converters =
                _mUnits.CreateOrGetUnitConverter(StockConverterName.VolumetricFlow.ToString());
            var conversionProvider = new NdDualConversionProvider();

            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1D;
            converters.Add(VolumetricFlowUnit.CubicMetersPerSecond.ToString(), conversionProvider);
        }
Example #3
0
        private static void InitAngleConverters()
        {
            var converters =
                _mUnits.CreateOrGetUnitConverter(StockConverterName.Direction.ToString());

            var conversionProvider = new NdDualConversionProvider();

            converters.Add("Radians", conversionProvider);
            conversionProvider.ConversionDelegate = new DummyRadiansConversionDelegate();

            conversionProvider = new NdDualConversionProvider();
            converters.Add("Degrees", conversionProvider);
            conversionProvider.ConversionDelegate = new DegreesRadiansConversionDelegate();
        }
Example #4
0
        public void Populate(string unitOfMeasurementName, string[] units, double[] conversionFactors)
        {
            #region EvaluateBasicPopulationRules

            if (string.IsNullOrEmpty(unitOfMeasurementName))
            {
                throw new Exception("Unit of measurement name must be set.");
            }

            if (units == null || conversionFactors == null)
            {
                throw new Exception("Either Units or ConversionFactors argument is not set.");
            }

            if (units.Length == 0 || conversionFactors.Length == 0)
            {
                throw new Exception("Units and ConversionFactors arguments must contain more than zero elements.");
            }

            if (units.Length != conversionFactors.Length)
            {
                throw new Exception("Units and ConversionFactors arguments must be the same length.");
            }


            if (conversionFactors[0] != 1D)
            {
                throw new Exception("First conversion factor for " + unitOfMeasurementName + " (" + units[0] +
                                    ") must be 1.0 and is " + conversionFactors[0] + ".");
            }

            #endregion

            var convertersForThisUnit = new UnitOfMeasurementConverters();
            convertersForThisUnit.Name = unitOfMeasurementName;
            _mAgCollection.Add(unitOfMeasurementName, convertersForThisUnit);

            for (var index = 0; index < units.Length; index++)
            {
                var newNode = new NdUnitAgConversionData();
                newNode.Name             = units[index];
                newNode.ConversionFactor = conversionFactors[index];
                var conversionProvider = new NdDualConversionProvider();
                conversionProvider.ConversionDataObject = newNode;
                convertersForThisUnit.Add(newNode.Name, conversionProvider);
            }
        }
Example #5
0
        private static void InitSpecificEnergyConverters()
        {
            var converters =
                _mUnits.CreateOrGetUnitConverter(StockConverterName.SpecificEnergy.ToString());
            var conversionProvider = new NdDualConversionProvider();

            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1D; // Base unit
            converters.Add(SpecificEnergyUnit.JouleKg.ToString(), conversionProvider);

            conversionProvider = new NdDualConversionProvider();
            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1000D;
            converters.Add(SpecificEnergyUnit.JouleG.ToString(), conversionProvider);

            conversionProvider = new NdDualConversionProvider();
            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1000000D;
            converters.Add(SpecificEnergyUnit.KjKg.ToString(), conversionProvider);
        }
Example #6
0
        private static void InitTemperatureConverters()
        {
            var converters =
                _mUnits.CreateOrGetUnitConverter(StockConverterName.Temperature.ToString());

            var conversionProvider = new NdDualConversionProvider();

            conversionProvider.ConversionDelegate = new FhtToCelcConversion();
            converters.Add("Fahrenheit", conversionProvider);

            conversionProvider = new NdDualConversionProvider();
            conversionProvider.ConversionDelegate = new AdditionBasedConversion();
            ((AdditionBasedConversion)conversionProvider.ConversionDelegate).AdditionMember = 273.15;
            converters.Add("Kelvin", conversionProvider);

            conversionProvider = new NdDualConversionProvider();
            conversionProvider.ConversionDelegate   = null;
            conversionProvider.ConversionDataObject = new NdUnitAgConversionData();
            conversionProvider.ConversionDataObject.ConversionFactor = 1;
            converters.Add("Celsius", conversionProvider);
        }