Skip to content

Commit ebf78f2

Browse files
authored
Add SlugSquareFoot and SlugSquareInch (#482)
* Add 'SlugSquareFoot' and 'SlugSquareInch' as units of MassMomentOfIntertia * Add slug as a unit of Mass
2 parents fe8b3e9 + 743d222 commit ebf78f2

15 files changed

+220
-0
lines changed

Common/GeneratedCode/Quantities/Mass.Common.g.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,11 @@ public static BaseDimensions BaseDimensions
256256
/// </summary>
257257
public double ShortTons => As(MassUnit.ShortTon);
258258

259+
/// <summary>
260+
/// Get Mass in Slugs.
261+
/// </summary>
262+
public double Slugs => As(MassUnit.Slug);
263+
259264
/// <summary>
260265
/// Get Mass in Stone.
261266
/// </summary>
@@ -541,6 +546,20 @@ public static Mass FromShortTons(QuantityValue shorttons)
541546
return new Mass(value, MassUnit.ShortTon);
542547
}
543548

549+
/// <summary>
550+
/// Get Mass from Slugs.
551+
/// </summary>
552+
#if WINDOWS_UWP
553+
[Windows.Foundation.Metadata.DefaultOverload]
554+
public static Mass FromSlugs(double slugs)
555+
#else
556+
public static Mass FromSlugs(QuantityValue slugs)
557+
#endif
558+
{
559+
double value = (double) slugs;
560+
return new Mass(value, MassUnit.Slug);
561+
}
562+
544563
/// <summary>
545564
/// Get Mass from Stone.
546565
/// </summary>
@@ -760,6 +779,7 @@ private double AsBaseUnit()
760779
case MassUnit.Pound: return _value*0.45359237;
761780
case MassUnit.ShortHundredweight: return _value/0.022046226218487758;
762781
case MassUnit.ShortTon: return _value*9.0718474e2;
782+
case MassUnit.Slug: return _value/6.852176556196105e-2;
763783
case MassUnit.Stone: return _value/0.1574731728702698;
764784
case MassUnit.Tonne: return _value*1e3;
765785
default:
@@ -795,6 +815,7 @@ private double AsBaseNumericType(MassUnit unit)
795815
case MassUnit.Pound: return baseUnitValue/0.45359237;
796816
case MassUnit.ShortHundredweight: return baseUnitValue*0.022046226218487758;
797817
case MassUnit.ShortTon: return baseUnitValue/9.0718474e2;
818+
case MassUnit.Slug: return baseUnitValue*6.852176556196105e-2;
798819
case MassUnit.Stone: return baseUnitValue*0.1574731728702698;
799820
case MassUnit.Tonne: return baseUnitValue/1e3;
800821
default:

Common/GeneratedCode/Quantities/MassMomentOfInertia.Common.g.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,16 @@ public static BaseDimensions BaseDimensions
271271
/// </summary>
272272
public double PoundSquareInches => As(MassMomentOfInertiaUnit.PoundSquareInch);
273273

274+
/// <summary>
275+
/// Get MassMomentOfInertia in SlugSquareFeet.
276+
/// </summary>
277+
public double SlugSquareFeet => As(MassMomentOfInertiaUnit.SlugSquareFoot);
278+
279+
/// <summary>
280+
/// Get MassMomentOfInertia in SlugSquareInches.
281+
/// </summary>
282+
public double SlugSquareInches => As(MassMomentOfInertiaUnit.SlugSquareInch);
283+
274284
/// <summary>
275285
/// Get MassMomentOfInertia in TonneSquareCentimeters.
276286
/// </summary>
@@ -608,6 +618,34 @@ public static MassMomentOfInertia FromPoundSquareInches(QuantityValue poundsquar
608618
return new MassMomentOfInertia(value, MassMomentOfInertiaUnit.PoundSquareInch);
609619
}
610620

621+
/// <summary>
622+
/// Get MassMomentOfInertia from SlugSquareFeet.
623+
/// </summary>
624+
#if WINDOWS_UWP
625+
[Windows.Foundation.Metadata.DefaultOverload]
626+
public static MassMomentOfInertia FromSlugSquareFeet(double slugsquarefeet)
627+
#else
628+
public static MassMomentOfInertia FromSlugSquareFeet(QuantityValue slugsquarefeet)
629+
#endif
630+
{
631+
double value = (double) slugsquarefeet;
632+
return new MassMomentOfInertia(value, MassMomentOfInertiaUnit.SlugSquareFoot);
633+
}
634+
635+
/// <summary>
636+
/// Get MassMomentOfInertia from SlugSquareInches.
637+
/// </summary>
638+
#if WINDOWS_UWP
639+
[Windows.Foundation.Metadata.DefaultOverload]
640+
public static MassMomentOfInertia FromSlugSquareInches(double slugsquareinches)
641+
#else
642+
public static MassMomentOfInertia FromSlugSquareInches(QuantityValue slugsquareinches)
643+
#endif
644+
{
645+
double value = (double) slugsquareinches;
646+
return new MassMomentOfInertia(value, MassMomentOfInertiaUnit.SlugSquareInch);
647+
}
648+
611649
/// <summary>
612650
/// Get MassMomentOfInertia from TonneSquareCentimeters.
613651
/// </summary>
@@ -858,6 +896,8 @@ private double AsBaseUnit()
858896
case MassMomentOfInertiaUnit.MilligramSquareMillimeter: return (_value/1e9) * 1e-3d;
859897
case MassMomentOfInertiaUnit.PoundSquareFoot: return _value*4.21401101e-2;
860898
case MassMomentOfInertiaUnit.PoundSquareInch: return _value*2.9263965e-4;
899+
case MassMomentOfInertiaUnit.SlugSquareFoot: return _value*1.3558179619;
900+
case MassMomentOfInertiaUnit.SlugSquareInch: return _value*9.41540242e-3;
861901
case MassMomentOfInertiaUnit.TonneSquareCentimeter: return _value/1e1;
862902
case MassMomentOfInertiaUnit.TonneSquareDecimeter: return _value/1e-1;
863903
case MassMomentOfInertiaUnit.TonneSquareMeter: return _value/1e-3;
@@ -898,6 +938,8 @@ private double AsBaseNumericType(MassMomentOfInertiaUnit unit)
898938
case MassMomentOfInertiaUnit.MilligramSquareMillimeter: return (baseUnitValue*1e9) / 1e-3d;
899939
case MassMomentOfInertiaUnit.PoundSquareFoot: return baseUnitValue/4.21401101e-2;
900940
case MassMomentOfInertiaUnit.PoundSquareInch: return baseUnitValue/2.9263965e-4;
941+
case MassMomentOfInertiaUnit.SlugSquareFoot: return baseUnitValue/1.3558179619;
942+
case MassMomentOfInertiaUnit.SlugSquareInch: return baseUnitValue/9.41540242e-3;
901943
case MassMomentOfInertiaUnit.TonneSquareCentimeter: return baseUnitValue*1e1;
902944
case MassMomentOfInertiaUnit.TonneSquareDecimeter: return baseUnitValue*1e-1;
903945
case MassMomentOfInertiaUnit.TonneSquareMeter: return baseUnitValue*1e-3;

Common/UnitDefinitions/Mass.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,20 @@
110110
}
111111
]
112112
},
113+
{
114+
"SingularName": "Slug",
115+
"PluralName": "Slugs",
116+
"FromUnitToBaseFunc": "x/6.852176556196105e-2",
117+
"FromBaseToUnitFunc": "x*6.852176556196105e-2",
118+
"XmlDocSummary": "The slug (abbreviation slug) is a unit of mass that is accelerated by 1 ft/s² when a force of one pound (lbf) is exerted on it.",
119+
"XmlDocRemarks": "http://en.wikipedia.org/wiki/Slug_(unit)",
120+
"Localization": [
121+
{
122+
"Culture": "en-US",
123+
"Abbreviations": [ "slug" ]
124+
}
125+
]
126+
},
113127
{
114128
"SingularName": "Stone",
115129
"PluralName": "Stone",

Common/UnitDefinitions/MassMomentOfInertia.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,30 @@
134134
"Abbreviations": [ "lb·in²" ]
135135
}
136136
]
137+
},
138+
{
139+
"SingularName": "SlugSquareFoot",
140+
"PluralName": "SlugSquareFeet",
141+
"FromUnitToBaseFunc": "x*1.3558179619",
142+
"FromBaseToUnitFunc": "x/1.3558179619",
143+
"Localization": [
144+
{
145+
"Culture": "en-US",
146+
"Abbreviations": [ "slug·ft²" ]
147+
}
148+
]
149+
},
150+
{
151+
"SingularName": "SlugSquareInch",
152+
"PluralName": "SlugSquareInches",
153+
"FromUnitToBaseFunc": "x*9.41540242e-3",
154+
"FromBaseToUnitFunc": "x/9.41540242e-3",
155+
"Localization": [
156+
{
157+
"Culture": "en-US",
158+
"Abbreviations": [ "slug·in²" ]
159+
}
160+
]
137161
}
138162
]
139163
}

UnitsNet.Tests/CustomCode/MassMomentOfInertiaTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ public class MassMomentOfInertiaTests : MassMomentOfInertiaTestsBase
7474

7575
protected override double PoundSquareInchesInOneKilogramSquareMeter => 1 / 2.9263965e-4;
7676

77+
protected override double SlugSquareFeetInOneKilogramSquareMeter => 1 / 1.35583;
78+
79+
protected override double SlugSquareInchesInOneKilogramSquareMeter => 1 / 9.41548e-3;
80+
7781
protected override double KilotonneSquareCentimetersInOneKilogramSquareMeter => 1e-2;
7882

7983
protected override double KilotonneSquareDecimetersInOneKilogramSquareMeter => 1e-4;

UnitsNet.Tests/CustomCode/MassTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public class MassTests : MassTestsBase
6262

6363
protected override double ShortTonsInOneKilogram => 1.102311310924388e-3;
6464

65+
protected override double SlugsInOneKilogram => 6.85217659e-2;
66+
6567
protected override double StoneInOneKilogram => 0.1574731728702698;
6668

6769
protected override double TonnesInOneKilogram => 1E-3;

UnitsNet.Tests/GeneratedCode/MassMomentOfInertiaTestsBase.g.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public abstract partial class MassMomentOfInertiaTestsBase
7575
protected abstract double MilligramSquareMillimetersInOneKilogramSquareMeter { get; }
7676
protected abstract double PoundSquareFeetInOneKilogramSquareMeter { get; }
7777
protected abstract double PoundSquareInchesInOneKilogramSquareMeter { get; }
78+
protected abstract double SlugSquareFeetInOneKilogramSquareMeter { get; }
79+
protected abstract double SlugSquareInchesInOneKilogramSquareMeter { get; }
7880
protected abstract double TonneSquareCentimetersInOneKilogramSquareMeter { get; }
7981
protected abstract double TonneSquareDecimetersInOneKilogramSquareMeter { get; }
8082
protected abstract double TonneSquareMetersInOneKilogramSquareMeter { get; }
@@ -103,6 +105,8 @@ public abstract partial class MassMomentOfInertiaTestsBase
103105
protected virtual double MilligramSquareMillimetersTolerance { get { return 1e-5; } }
104106
protected virtual double PoundSquareFeetTolerance { get { return 1e-5; } }
105107
protected virtual double PoundSquareInchesTolerance { get { return 1e-5; } }
108+
protected virtual double SlugSquareFeetTolerance { get { return 1e-5; } }
109+
protected virtual double SlugSquareInchesTolerance { get { return 1e-5; } }
106110
protected virtual double TonneSquareCentimetersTolerance { get { return 1e-5; } }
107111
protected virtual double TonneSquareDecimetersTolerance { get { return 1e-5; } }
108112
protected virtual double TonneSquareMetersTolerance { get { return 1e-5; } }
@@ -135,6 +139,8 @@ public void KilogramSquareMeterToMassMomentOfInertiaUnits()
135139
AssertEx.EqualTolerance(MilligramSquareMillimetersInOneKilogramSquareMeter, kilogramsquaremeter.MilligramSquareMillimeters, MilligramSquareMillimetersTolerance);
136140
AssertEx.EqualTolerance(PoundSquareFeetInOneKilogramSquareMeter, kilogramsquaremeter.PoundSquareFeet, PoundSquareFeetTolerance);
137141
AssertEx.EqualTolerance(PoundSquareInchesInOneKilogramSquareMeter, kilogramsquaremeter.PoundSquareInches, PoundSquareInchesTolerance);
142+
AssertEx.EqualTolerance(SlugSquareFeetInOneKilogramSquareMeter, kilogramsquaremeter.SlugSquareFeet, SlugSquareFeetTolerance);
143+
AssertEx.EqualTolerance(SlugSquareInchesInOneKilogramSquareMeter, kilogramsquaremeter.SlugSquareInches, SlugSquareInchesTolerance);
138144
AssertEx.EqualTolerance(TonneSquareCentimetersInOneKilogramSquareMeter, kilogramsquaremeter.TonneSquareCentimeters, TonneSquareCentimetersTolerance);
139145
AssertEx.EqualTolerance(TonneSquareDecimetersInOneKilogramSquareMeter, kilogramsquaremeter.TonneSquareDecimeters, TonneSquareDecimetersTolerance);
140146
AssertEx.EqualTolerance(TonneSquareMetersInOneKilogramSquareMeter, kilogramsquaremeter.TonneSquareMeters, TonneSquareMetersTolerance);
@@ -166,6 +172,8 @@ public void FromValueAndUnit()
166172
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.MilligramSquareMillimeter).MilligramSquareMillimeters, MilligramSquareMillimetersTolerance);
167173
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.PoundSquareFoot).PoundSquareFeet, PoundSquareFeetTolerance);
168174
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.PoundSquareInch).PoundSquareInches, PoundSquareInchesTolerance);
175+
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.SlugSquareFoot).SlugSquareFeet, SlugSquareFeetTolerance);
176+
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.SlugSquareInch).SlugSquareInches, SlugSquareInchesTolerance);
169177
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.TonneSquareCentimeter).TonneSquareCentimeters, TonneSquareCentimetersTolerance);
170178
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.TonneSquareDecimeter).TonneSquareDecimeters, TonneSquareDecimetersTolerance);
171179
AssertEx.EqualTolerance(1, MassMomentOfInertia.From(1, MassMomentOfInertiaUnit.TonneSquareMeter).TonneSquareMeters, TonneSquareMetersTolerance);
@@ -198,6 +206,8 @@ public void As()
198206
AssertEx.EqualTolerance(MilligramSquareMillimetersInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.MilligramSquareMillimeter), MilligramSquareMillimetersTolerance);
199207
AssertEx.EqualTolerance(PoundSquareFeetInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.PoundSquareFoot), PoundSquareFeetTolerance);
200208
AssertEx.EqualTolerance(PoundSquareInchesInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.PoundSquareInch), PoundSquareInchesTolerance);
209+
AssertEx.EqualTolerance(SlugSquareFeetInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.SlugSquareFoot), SlugSquareFeetTolerance);
210+
AssertEx.EqualTolerance(SlugSquareInchesInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.SlugSquareInch), SlugSquareInchesTolerance);
201211
AssertEx.EqualTolerance(TonneSquareCentimetersInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.TonneSquareCentimeter), TonneSquareCentimetersTolerance);
202212
AssertEx.EqualTolerance(TonneSquareDecimetersInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.TonneSquareDecimeter), TonneSquareDecimetersTolerance);
203213
AssertEx.EqualTolerance(TonneSquareMetersInOneKilogramSquareMeter, kilogramsquaremeter.As(MassMomentOfInertiaUnit.TonneSquareMeter), TonneSquareMetersTolerance);
@@ -297,6 +307,14 @@ public void ToUnit()
297307
AssertEx.EqualTolerance(PoundSquareInchesInOneKilogramSquareMeter, (double)poundsquareinchQuantity.Value, PoundSquareInchesTolerance);
298308
Assert.Equal(MassMomentOfInertiaUnit.PoundSquareInch, poundsquareinchQuantity.Unit);
299309

310+
var slugsquarefootQuantity = kilogramsquaremeter.ToUnit(MassMomentOfInertiaUnit.SlugSquareFoot);
311+
AssertEx.EqualTolerance(SlugSquareFeetInOneKilogramSquareMeter, (double)slugsquarefootQuantity.Value, SlugSquareFeetTolerance);
312+
Assert.Equal(MassMomentOfInertiaUnit.SlugSquareFoot, slugsquarefootQuantity.Unit);
313+
314+
var slugsquareinchQuantity = kilogramsquaremeter.ToUnit(MassMomentOfInertiaUnit.SlugSquareInch);
315+
AssertEx.EqualTolerance(SlugSquareInchesInOneKilogramSquareMeter, (double)slugsquareinchQuantity.Value, SlugSquareInchesTolerance);
316+
Assert.Equal(MassMomentOfInertiaUnit.SlugSquareInch, slugsquareinchQuantity.Unit);
317+
300318
var tonnesquarecentimeterQuantity = kilogramsquaremeter.ToUnit(MassMomentOfInertiaUnit.TonneSquareCentimeter);
301319
AssertEx.EqualTolerance(TonneSquareCentimetersInOneKilogramSquareMeter, (double)tonnesquarecentimeterQuantity.Value, TonneSquareCentimetersTolerance);
302320
Assert.Equal(MassMomentOfInertiaUnit.TonneSquareCentimeter, tonnesquarecentimeterQuantity.Unit);
@@ -340,6 +358,8 @@ public void ConversionRoundTrip()
340358
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromMilligramSquareMillimeters(kilogramsquaremeter.MilligramSquareMillimeters).KilogramSquareMeters, MilligramSquareMillimetersTolerance);
341359
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromPoundSquareFeet(kilogramsquaremeter.PoundSquareFeet).KilogramSquareMeters, PoundSquareFeetTolerance);
342360
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromPoundSquareInches(kilogramsquaremeter.PoundSquareInches).KilogramSquareMeters, PoundSquareInchesTolerance);
361+
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromSlugSquareFeet(kilogramsquaremeter.SlugSquareFeet).KilogramSquareMeters, SlugSquareFeetTolerance);
362+
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromSlugSquareInches(kilogramsquaremeter.SlugSquareInches).KilogramSquareMeters, SlugSquareInchesTolerance);
343363
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromTonneSquareCentimeters(kilogramsquaremeter.TonneSquareCentimeters).KilogramSquareMeters, TonneSquareCentimetersTolerance);
344364
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromTonneSquareDecimeters(kilogramsquaremeter.TonneSquareDecimeters).KilogramSquareMeters, TonneSquareDecimetersTolerance);
345365
AssertEx.EqualTolerance(1, MassMomentOfInertia.FromTonneSquareMeters(kilogramsquaremeter.TonneSquareMeters).KilogramSquareMeters, TonneSquareMetersTolerance);

0 commit comments

Comments
 (0)