1026.98355, MolarityUnit.MolesPerCubicMeter)] // test from JonathanDavies626 public void MolarityFromMassConcentrationAndMolarMass( double massConcValue, MassConcentrationUnit massConcUnit, double molarMassValue, MolarMassUnit molarMassUnit, double expectedMolarityValue, MolarityUnit expectedMolarityUnit, double tolerance = 1e-5) { var massConcentration = new MassConcentration(massConcValue, massConcUnit); var molarMass = new MolarMass(molarMassValue, molarMassUnit); Molarity molarity = massConcentration.ToMolarity(molarMass); // molarity / molarMass AssertEx.EqualTolerance(expectedMolarityValue, molarity.As(expectedMolarityUnit), tolerance); }
6, MassUnit.Kilogram)] // synthetic data public static void ComponentMassFromMassConcentrationAndSolutionVolume( double massConcValue, MassConcentrationUnit massConcUnit, double volumeValue, VolumeUnit volumeUnit, double expectedMassValue, MassUnit expectedMassUnit, double tolerance = 1e-5) { var massConcentration = new MassConcentration(massConcValue, massConcUnit); var volume = new Volume(volumeValue, volumeUnit); Mass massComponent = massConcentration * volume; AssertEx.EqualTolerance(expectedMassValue, massComponent.As(expectedMassUnit), tolerance); }
0.5, VolumeConcentrationUnit.DecimalFraction)] // synthetic data public void VolumeConcentrationFromMassConcentrationAndDensity( double componentDensityValue, DensityUnit componentDensityUnit, double massConcValue, MassConcentrationUnit masConcUnit, double expectedVolumeConcValue, VolumeConcentrationUnit expectedVolumeConcUnit, double tolerence = 1e-5) { var density = new Density(componentDensityValue, componentDensityUnit); var massConcentration = new MassConcentration(massConcValue, masConcUnit); VolumeConcentration volumeConcentration = massConcentration.ToVolumeConcentration(density); // massConcentration / density; AssertEx.EqualTolerance(expectedVolumeConcValue, volumeConcentration.As(expectedVolumeConcUnit), tolerence); }
4.16667, MassConcentrationUnit.KilogramPerCubicMeter)] // HCL solution public void ExpectMolarityConvertedToMassConcentrationCorrectly( double molarityValue, MolarityUnit molarityUnit, double componentMolarMassValue, MolarMassUnit compontMolarMassUnit, double expectedMassConcValue, MassConcentrationUnit expectedMassConcUnit, double tolerence = 1e-5) { var molarity = new Molarity(molarityValue, molarityUnit); var componentMolarMass = new MolarMass(componentMolarMassValue, compontMolarMassUnit); MassConcentration concentration = molarity.ToMassConcentration(componentMolarMass); // molarity * molarMass AssertEx.EqualTolerance(expectedMassConcValue, concentration.As(expectedMassConcUnit), tolerence); }
23.03422, MassConcentrationUnit.GramPerLiter)] // 29.19419518377693 = VolumeConcentration_0_5M_Ethanol public void MassConcentrationFromVolumeConcentrationAndComponentDensity( double volumeConcValue, VolumeConcentrationUnit volumeConcUnit, double componentDensityValue, DensityUnit componentDensityUnit, double expectedMassConcValue, MassConcentrationUnit expectedMassConcUnit, double tolerence = 1e-5) { var volumeConcentration = new VolumeConcentration(volumeConcValue, volumeConcUnit); var componentDensity = new Density(componentDensityValue, componentDensityUnit); MassConcentration massConcentration = volumeConcentration.ToMassConcentration(componentDensity); // volumeConcentration * density AssertEx.EqualTolerance(expectedMassConcValue, massConcentration.As(expectedMassConcUnit), tolerence); }
private double GetValueAs(MassConcentrationUnit unit) { if(Unit == unit) return _value; var baseUnitValue = GetValueInBaseUnit(); switch(unit) { case MassConcentrationUnit.CentigramPerDeciliter: return (baseUnitValue*1e-1) / 1e-2d; case MassConcentrationUnit.CentigramPerLiter: return (baseUnitValue) / 1e-2d; case MassConcentrationUnit.CentigramPerMicroliter: return (baseUnitValue*1e-6) / 1e-2d; case MassConcentrationUnit.CentigramPerMilliliter: return (baseUnitValue*1e-3) / 1e-2d; case MassConcentrationUnit.DecigramPerDeciliter: return (baseUnitValue*1e-1) / 1e-1d; case MassConcentrationUnit.DecigramPerLiter: return (baseUnitValue) / 1e-1d; case MassConcentrationUnit.DecigramPerMicroliter: return (baseUnitValue*1e-6) / 1e-1d; case MassConcentrationUnit.DecigramPerMilliliter: return (baseUnitValue*1e-3) / 1e-1d; case MassConcentrationUnit.GramPerCubicCentimeter: return baseUnitValue*1e-3; case MassConcentrationUnit.GramPerCubicMeter: return baseUnitValue*1e3; case MassConcentrationUnit.GramPerCubicMillimeter: return baseUnitValue*1e-6; case MassConcentrationUnit.GramPerDeciliter: return baseUnitValue*1e-1; case MassConcentrationUnit.GramPerLiter: return baseUnitValue; case MassConcentrationUnit.GramPerMicroliter: return baseUnitValue*1e-6; case MassConcentrationUnit.GramPerMilliliter: return baseUnitValue*1e-3; case MassConcentrationUnit.KilogramPerCubicCentimeter: return (baseUnitValue*1e-3) / 1e3d; case MassConcentrationUnit.KilogramPerCubicMeter: return (baseUnitValue*1e3) / 1e3d; case MassConcentrationUnit.KilogramPerCubicMillimeter: return (baseUnitValue*1e-6) / 1e3d; case MassConcentrationUnit.KilogramPerLiter: return (baseUnitValue) / 1e3d; case MassConcentrationUnit.KilopoundPerCubicFoot: return (baseUnitValue*0.062427961) / 1e3d; case MassConcentrationUnit.KilopoundPerCubicInch: return (baseUnitValue*3.6127298147753e-5) / 1e3d; case MassConcentrationUnit.MicrogramPerCubicMeter: return (baseUnitValue*1e3) / 1e-6d; case MassConcentrationUnit.MicrogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-6d; case MassConcentrationUnit.MicrogramPerLiter: return (baseUnitValue) / 1e-6d; case MassConcentrationUnit.MicrogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-6d; case MassConcentrationUnit.MicrogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-6d; case MassConcentrationUnit.MilligramPerCubicMeter: return (baseUnitValue*1e3) / 1e-3d; case MassConcentrationUnit.MilligramPerDeciliter: return (baseUnitValue*1e-1) / 1e-3d; case MassConcentrationUnit.MilligramPerLiter: return (baseUnitValue) / 1e-3d; case MassConcentrationUnit.MilligramPerMicroliter: return (baseUnitValue*1e-6) / 1e-3d; case MassConcentrationUnit.MilligramPerMilliliter: return (baseUnitValue*1e-3) / 1e-3d; case MassConcentrationUnit.NanogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-9d; case MassConcentrationUnit.NanogramPerLiter: return (baseUnitValue) / 1e-9d; case MassConcentrationUnit.NanogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-9d; case MassConcentrationUnit.NanogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-9d; case MassConcentrationUnit.OuncePerImperialGallon: return baseUnitValue*0.1603586720609; case MassConcentrationUnit.OuncePerUSGallon: return baseUnitValue*0.1335264711843; case MassConcentrationUnit.PicogramPerDeciliter: return (baseUnitValue*1e-1) / 1e-12d; case MassConcentrationUnit.PicogramPerLiter: return (baseUnitValue) / 1e-12d; case MassConcentrationUnit.PicogramPerMicroliter: return (baseUnitValue*1e-6) / 1e-12d; case MassConcentrationUnit.PicogramPerMilliliter: return (baseUnitValue*1e-3) / 1e-12d; case MassConcentrationUnit.PoundPerCubicFoot: return baseUnitValue*0.062427961; case MassConcentrationUnit.PoundPerCubicInch: return baseUnitValue*3.6127298147753e-5; case MassConcentrationUnit.PoundPerImperialGallon: return baseUnitValue/9.9776398e1; case MassConcentrationUnit.PoundPerUSGallon: return baseUnitValue/1.19826427e2; case MassConcentrationUnit.SlugPerCubicFoot: return baseUnitValue*0.00194032033; case MassConcentrationUnit.TonnePerCubicCentimeter: return baseUnitValue*1e-9; case MassConcentrationUnit.TonnePerCubicMeter: return baseUnitValue*0.001; case MassConcentrationUnit.TonnePerCubicMillimeter: return baseUnitValue*1e-12; default: throw new NotImplementedException($"Can not convert {Unit} to {unit}."); } }
/// <summary> /// Converts this Duration to another Duration with the unit representation <paramref name="unit" />. /// </summary> /// <returns>A Duration with the specified unit.</returns> public MassConcentration ToUnit(MassConcentrationUnit unit) { var convertedValue = GetValueAs(unit); return new MassConcentration(convertedValue, unit); }
/// <summary> /// Convert to the unit representation <paramref name="unit" />. /// </summary> /// <returns>Value converted to the specified unit.</returns> public double As(MassConcentrationUnit unit) => GetValueAs(unit);
/// <summary> /// Dynamically convert from value and unit enum <see cref="MassConcentrationUnit" /> to <see cref="MassConcentration" />. /// </summary> /// <param name="value">Value to convert from.</param> /// <param name="fromUnit">Unit to convert from.</param> /// <returns>MassConcentration unit value.</returns> public static MassConcentration From(double value, MassConcentrationUnit fromUnit) { return new MassConcentration(value, fromUnit); }
/// <summary> /// Creates the quantity with the given numeric value and unit. /// </summary> /// <param name="value">The numeric value to construct this quantity with.</param> /// <param name="unit">The unit representation to construct this quantity with.</param> /// <exception cref="ArgumentException">If value is NaN or Infinity.</exception> public MassConcentration(double value, MassConcentrationUnit unit) { _value = value; _unit = unit; }
public static void HasConversion(this PropertyBuilder <MassConcentration> propertyBuilder, MassConcentrationUnit unit) => propertyBuilder.HasConversion(v => v.As(unit), v => new MassConcentration(v, unit));