//------------------------------------------------------------------------------ public MUDomain() { Adimensional = new MeasureUnitWithDefaultTolerance(0, MUCollection.Adimensional.adim); Length = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Length.m); Mass = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Mass.kg); Time = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Time.sec); ElectricCurrent = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.ElectricCurrent.A); Temperature = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Temperature.C); AmountOfSubstance = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.AmountOfSubstance.mol); LuminousIntensity = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.LuminousIntensity.cd); //--------------------------------------------------------------- Length2 = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Length2.m2); Length3 = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Length3.m3); Length4 = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Length4.m4); Force = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Force.N); PlaneAngle = new MeasureUnitWithDefaultTolerance(PI / 180.0 / 10.0, MUCollection.PlaneAngle.rad); Pressure = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Pressure.Pa); Acceleration = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Acceleration.m_s2); Speed = new MeasureUnitWithDefaultTolerance(1e-1, MUCollection.Speed.m_s); AngularSpeed = new MeasureUnitWithDefaultTolerance(PI / 180d / 10d, MUCollection.AngularSpeed.rad_s); AngularAcceleration = new MeasureUnitWithDefaultTolerance(PI / 180d / 10d, MUCollection.AngularAcceleration.rad_s2); BendingMoment = new MeasureUnitWithDefaultTolerance(1e-2, MUCollection.BendingMoment.Nm); Energy = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Energy.J); Power = new MeasureUnitWithDefaultTolerance(1e-4, MUCollection.Power.W); ElectricalConductance = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.ElectricalConductance.S); ElectricalConductivity = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.ElectricalConductivity.S_m); Turbidity = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.Turbidity.FNU); Frequency = new MeasureUnitWithDefaultTolerance(1e-9, MUCollection.Frequency.hz); VolumetricFlowRate = new MeasureUnitWithDefaultTolerance(1e-6, MUCollection.VolumetricFlowRate.m3_s); }
/// <summary> /// allow to set programmatically the associated measure unit and tolerance in the model of a given physical quantity /// if given defaulttolreance is null, then current default tolerance will be converted to given measure unit /// </summary> public void SetupItem(string physicalQuantityName, string measureUnitName, double?defaultTolerance = null) { var pq = PQCollection.PhysicalQuantities.First(w => w.Name == physicalQuantityName); var t = GetType(); var props = t.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); var mu = MUCollection.MeasureUnits.First(w => w.Name == measureUnitName); MeasureUnitWithDefaultTolerance muwdt = null; if (defaultTolerance.HasValue) { muwdt = new MeasureUnitWithDefaultTolerance(defaultTolerance.Value, mu); } else { var curTol = props .Where(r => r.PropertyType == tMeasureUnitWithDefaultTolerance) .First(w => w.Name == physicalQuantityName) .GetMethod.Invoke(this, null); muwdt = (curTol as MeasureUnitWithDefaultTolerance).ConvertTo(mu); } props .Where(r => r.PropertyType == tMeasureUnitWithDefaultTolerance) .First(w => w.Name == physicalQuantityName) .SetMethod.Invoke(this, new object[] { muwdt }); }