Ejemplo n.º 1
0
 private ValueInfo(IPhysicalQuantity quantity, IDimensionUnit unit, string substance, string location)
 {
     this.quantity  = quantity;
     this.unit      = unit;
     this.substance = substance;
     this.location  = location;
 }
Ejemplo n.º 2
0
        static IDimensionUnit defineUnit(IDimensionUnit u)
        {
            IDimensionUnit ou;
            bool           alreadyDefined = units.TryGetValue(u.Name, out ou) || units.TryGetValue(u.ShortName, out ou) || units.TryGetValue(u.Dimension, out ou);

            if (alreadyDefined)
            {
                // redefinition check
                if (string.Compare(ou.Name, u.Name, StringComparison.OrdinalIgnoreCase) == 0 &&
                    string.Compare(ou.Dimension, u.Dimension, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    return(ou);
                }
                System.Diagnostics.Trace.Assert(false, $"Redefinition of unit '{u.ShortName}__{u.Dimension}' : {ou.ShortName}__{ou.Dimension}");
            }
            // check unit dimension (all subdimensions must be predefined)
            var subdimensions = u.Dimension.Split(dimensionsSeparators);

            if (subdimensions.Length > 1)
            {
                foreach (var subdim in subdimensions)
                {
                    if (char.IsLetter(subdim[0]))
                    {
                        System.Diagnostics.Trace.Assert(units.ContainsKey(subdim), "Unknown dimension '" + subdim + "' in '" + u.Dimension + '\'');
                    }
                    else
                    {
                        float tmp;
                        System.Diagnostics.Trace.Assert(float.TryParse(subdim, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out tmp) &&
                                                        Math.Abs(tmp) > float.Epsilon, "Invalid number '" + subdim + "' in dimension expression");
                    }
                }
            }
            units.Add(u.Name, u);
            if (!units.ContainsKey(u.ShortName))
            {
                units.Add(u.ShortName, u);
            }
            if (!units.ContainsKey(u.Dimension))
            {
                units.Add(u.Dimension, u);
            }
            return(u);
        }