Ejemplo n.º 1
0
        private void HorizontalAdd()
        {
            float[] a = new[]
            {
                1f,
                0f,
                1f,
                2f,
                100f,
                0.1f,
                1234f,
                678.234f,
                10f,
                1f,
                0f,
                1f,
                2f,
                100f,
                0.1f,
                1234f,
                678.234f,
            };

            const float r = 4042.668f;

            Assert.That(NumericsHelpers.HorizontalAdd(a), Is.Approximately(r));
        }
        public float GetHeatCapacity(GasMixture mixture)
        {
            Span <float> tmp = stackalloc float[mixture.Moles.Length];

            NumericsHelpers.Multiply(mixture.Moles, GasSpecificHeats, tmp);
            return(MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity));
        }
        private float GetHeatCapacityCalculation(float[] moles, bool immutable)
        {
            // Little hack to make space gas mixtures have heat capacity, therefore allowing them to cool down rooms.
            if (immutable && MathHelper.CloseTo(NumericsHelpers.HorizontalAdd(moles), 0f))
            {
                return(Atmospherics.SpaceHeatCapacity);
            }

            Span <float> tmp = stackalloc float[moles.Length];

            NumericsHelpers.Multiply(moles, GasSpecificHeats, tmp);
            return(MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity));
        }