public void DerivedQuantity_ToUnitSystem() { for (var i = 0; i < BenchmarkConstants.NbUnits; i++) { Consumer.Consume(DerivedQuantity.ToUnit(UnitSystems[0])); } }
private void AddStatistics() { // Add simple statistics for default HD results _resultSpec = _mike1DData.ResultSpecifications.Find(x => x.ID == "DefaultHDResults"); _resultSpec = CreateStatisticsResultSpecification(_resultSpec, ResultTypes.HD); _mike1DData.ResultSpecifications.Add(_resultSpec); // Water level AddQuantity(DerivedQuantity.Create(PredefinedQuantity.WaterLevel, DerivedQuantityType.Max)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.WaterLevel, DerivedQuantityType.MaxTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.WaterLevel, DerivedQuantityType.MinTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.WaterLevel, DerivedQuantityType.Min)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.WaterLevel, DerivedQuantityType.Average)); // Discharge AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.TimeIntegrate)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.Max)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.MaxTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.MinTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.Min)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.Average)); // Flow velocity AddQuantity(DerivedQuantity.Create(PredefinedQuantity.FlowVelocity, DerivedQuantityType.Max)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.FlowVelocity, DerivedQuantityType.MaxTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.FlowVelocity, DerivedQuantityType.MinTime)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.FlowVelocity, DerivedQuantityType.Min)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.FlowVelocity, DerivedQuantityType.Average)); }
/// <summary> /// This is a specific raise to double storage quantity power. /// </summary> /// <param name="quantity"></param> /// <param name="exponent"></param> /// <returns></returns> public static AnyQuantity <T> Power(AnyQuantity <T> quantity, AnyQuantity <double> exponent) { if (!exponent.Dimension.IsDimensionless) { throw new QuantityException("Raising Quantity to a non dimensionless quantity is not implemented", new NotImplementedException()); } // and I am ignoring the units conversion also Unit unit = quantity.Unit.RaiseUnitPower((float)exponent.Value); AnyQuantity <T> result = null; if (unit.QuantityType != typeof(DerivedQuantity <>)) { result = unit.MakeQuantity <T>(RaiseGenericByScalar(quantity.Value, exponent.Value)); } else { result = new DerivedQuantity <T>(unit.UnitDimension); result.Value = RaiseGenericByScalar(quantity.Value, exponent.Value); result.Unit = unit; } Debug.Assert(result.Dimension.Equals(result.Unit.UnitDimension), "Dimensions are not equal after power"); return(result); }
public void DerivedQuantity_ToUnit() { for (var i = 0; i < BenchmarkConstants.NbUnits; i++) { var conversion = DerivedUnitConversions[DerivedQuantityIndex]; Consumer.Consume(DerivedQuantity.ToUnit((LengthUnit)conversion.Value)); } }
private void AddAccumulatedTimeSeries() { // Find HD result specification _resultSpec = _mike1DData.ResultSpecifications.Find(x => x.ID == "DefaultHDResults"); // Accumulated values of discharge AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.TimeIntegrate)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.TimeIntegratePositive)); AddQuantity(DerivedQuantity.Create(PredefinedQuantity.Discharge, DerivedQuantityType.TimeIntegrateNegative)); }
public MainWindow() { InitializeComponent(); var quantity = Quantities.Length; var dimension = DerivedQuantityDimension.Parse("l*t^2/t^2"); var derived = new DerivedQuantity("Area", "A", dimension); toolManager = new ToolManager(this); toolManager.StartTool(new LineTool()); }
public AnyQuantity <T> GetThisUnitQuantity <T>(T value) { AnyQuantity <T> Quantity = null; if (QuantityType != typeof(DerivedQuantity <>) && QuantityType != null) { Type qt = QuantityType.MakeGenericType(typeof(T)); object j; if (Qcach.TryGetValue(qt, out j)) { Quantity = (AnyQuantity <T>)((AnyQuantity <T>)j).Clone(); //optimization for created quantities before } else { Quantity = (AnyQuantity <T>)Activator.CreateInstance(qt); Qcach.Add(qt, Quantity); } } else { //create it from the unit dimension Quantity = new DerivedQuantity <T>(UnitDimension); } Quantity.Unit = this; Quantity.Value = value; if (this.IsOverflowed) { Quantity.Value = AnyQuantity <T> .MultiplyScalarByGeneric(this.GetUnitOverflow(), value); } return(Quantity); }
static DerivedQuantities() { Frequency = (DerivedQuantity)Time.Pow(-1m); Area = (DerivedQuantity)(Length * Length); Volume = (DerivedQuantity)(Area * Length); VolumeFlowRate = (DerivedQuantity)(Volume / Time); Speed = (DerivedQuantity)(Length / Time); Acceleration = (DerivedQuantity)(Speed / Time); Force = (DerivedQuantity)(Mass * Acceleration); Pressure = (DerivedQuantity)(Force / Area); EnergyAndTorque = (DerivedQuantity)(Force * Length); Power = (DerivedQuantity)(EnergyAndTorque / Time); //Torque = (DerivedQuantity)(Force * Length); AngularVelocity = (DerivedQuantity)(Angle / Time); AngularAcceleration = (DerivedQuantity)(AngularVelocity / Time); WaveNumber = (DerivedQuantity)(Length.Pow(-1m)); Density = (DerivedQuantity)(Mass / Volume); SurfaceDensity = (DerivedQuantity)(Mass / Area); ElectricCharge = (DerivedQuantity)(ElectricCurrent * Time); Voltage = (DerivedQuantity)(EnergyAndTorque / ElectricCharge); ElectricCapacitance = (DerivedQuantity)(ElectricCharge / Voltage); ElectricResistance = (DerivedQuantity)(Voltage / ElectricCurrent); ElectricConductance = (DerivedQuantity)(ElectricResistance.Pow(-1m)); MagneticFlux = (DerivedQuantity)(Voltage * Time); MagneticFluxDensity = (DerivedQuantity)(MagneticFlux / Area); Inductance = (DerivedQuantity)(MagneticFlux / ElectricCurrent); LuminousFlux = (DerivedQuantity)(LuminousIntensity * SolidAngle); Illuminance = (DerivedQuantity)(LuminousFlux / Area); SpecificVolume = (DerivedQuantity)(Density.Pow(-1m)); ElectricCurrentDensity = (DerivedQuantity)(ElectricCurrent / Area); MagneticFieldStrength = (DerivedQuantity)(ElectricCurrent / Length); Luminance = (DerivedQuantity)(LuminousIntensity / Area); DynamicViscosity = (DerivedQuantity)(Pressure * Time); KinematicViscosity = (DerivedQuantity)(DynamicViscosity / Density); PowerFlux = (DerivedQuantity)(Power / Area); HeatCapacity = (DerivedQuantity)(EnergyAndTorque / Temperature); SpecificHeatCapacity = (DerivedQuantity)(HeatCapacity / Mass); SpecificEnergy = (DerivedQuantity)(EnergyAndTorque / Mass); ThermalConductivity = (DerivedQuantity)(Power / (Length * Temperature)); //EnergyDensity = (DerivedQuantity)(Energy / Volume); ElectricFieldStrength = (DerivedQuantity)(Voltage / Length); ElectricChargeDensity = (DerivedQuantity)(ElectricCharge / Volume); SurfaceChargeDensity = (DerivedQuantity)(ElectricCharge / Area); Permittivity = (DerivedQuantity)(ElectricCapacitance / Length); Permeability = (DerivedQuantity)(Inductance / Length); foreach (var field in typeof(DerivedQuantities).GetFields()) { var quantity = (DerivedQuantity)field.GetValue(field.Name) !; quantity.ChangeName(field.Name); } Frequency.ChangeSymbol("f"); Area.ChangeSymbol("A"); Volume.ChangeSymbol("V"); VolumeFlowRate.ChangeSymbol("Vdot"); Speed.ChangeSymbol("v"); Acceleration.ChangeSymbol("a"); Force.ChangeSymbol("F"); Pressure.ChangeSymbol("p"); EnergyAndTorque.ChangeSymbol("E"); Power.ChangeSymbol("P"); //Torque.ChangeSymbol("τ"); AngularVelocity.ChangeSymbol("ω"); AngularAcceleration.ChangeSymbol("α"); WaveNumber.ChangeSymbol("σ"); Density.ChangeSymbol("ρ"); ElectricCharge.ChangeSymbol("q"); Voltage.ChangeSymbol("ℰ"); ElectricCapacitance.ChangeSymbol("C"); ElectricResistance.ChangeSymbol("R"); MagneticFlux.ChangeSymbol("Φ"); MagneticFluxDensity.ChangeSymbol("B"); Inductance.ChangeSymbol("L"); LuminousFlux.ChangeSymbol("Φv"); Illuminance.ChangeSymbol("Ev"); ElectricCurrentDensity.ChangeSymbol("j"); MagneticFieldStrength.ChangeSymbol("H"); Luminance.ChangeSymbol("Lv"); DynamicViscosity.ChangeSymbol("μ"); KinematicViscosity.ChangeSymbol("ν"); SpecificHeatCapacity.ChangeSymbol("cp"); SpecificEnergy.ChangeSymbol("e"); ThermalConductivity.ChangeSymbol("k"); Permittivity.ChangeSymbol("ε"); }
public static DerivedQuantity <T> ConstructDerivedQuantity <T>(params AnyQuantity <T>[] quantities) { DerivedQuantity <T> DQ = new DerivedQuantity <T>(1, quantities); return(DQ); }