Skip to content

Commit 0c5c85e

Browse files
patchandthatangularsen
authored andcommitted
Add operator overloads for MassFlow, VolumeFlow and Density (#430)
1 parent 1c64c1a commit 0c5c85e

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

UnitsNet.Tests/CustomCode/MassFlowTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,5 +118,19 @@ public void MassFlowDividedByMassFluxEqualsArea()
118118
Area area = MassFlow.FromKilogramsPerSecond(20) / MassFlux.FromKilogramsPerSecondPerSquareMeter(2);
119119
Assert.Equal(10, area.SquareMeters);
120120
}
121+
122+
[Fact]
123+
public void MassFlowDividedByVolumeFlowEqualsDensity()
124+
{
125+
Density density = MassFlow.FromKilogramsPerSecond(12) / VolumeFlow.FromCubicMetersPerSecond(3);
126+
Assert.Equal(4, density.KilogramsPerCubicMeter);
127+
}
128+
129+
[Fact]
130+
public void MassFlowDividedByDensityEqualsVolumeFlow()
131+
{
132+
VolumeFlow volumeFlow = MassFlow.FromKilogramsPerSecond(20) / Density.FromKilogramsPerCubicMeter(4);
133+
Assert.Equal(5, volumeFlow.CubicMetersPerSecond);
134+
}
121135
}
122136
}

UnitsNet.Tests/CustomCode/VolumeFlowTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,19 @@ public void VolumeFlowDividedBySpeedEqualsArea()
121121
Area area = VolumeFlow.FromCubicMetersPerSecond(40) / Speed.FromMetersPerSecond(20);
122122
Assert.Equal(Area.FromSquareMeters(2), area);
123123
}
124+
125+
[Fact]
126+
public void VolumeFlowTimesDensityEqualsMassFlow()
127+
{
128+
MassFlow massFlow = VolumeFlow.FromCubicMetersPerSecond(2) * Density.FromKilogramsPerCubicMeter(3);
129+
Assert.Equal(MassFlow.FromKilogramsPerSecond(6), massFlow);
130+
}
131+
132+
[Fact]
133+
public void DensityTimesVolumeFlowEqualsMassFlow()
134+
{
135+
MassFlow massFlow = Density.FromKilogramsPerCubicMeter(3) * VolumeFlow.FromCubicMetersPerSecond(7);
136+
Assert.Equal(MassFlow.FromKilogramsPerSecond(21), massFlow);
137+
}
124138
}
125139
}

UnitsNet/CustomCode/Quantities/MassFlow.extra.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,16 @@ public partial struct MassFlow
8080
{
8181
return Area.FromSquareMeters(massFlow.KilogramsPerSecond / massFlux.KilogramsPerSecondPerSquareMeter);
8282
}
83+
84+
public static Density operator /(MassFlow massFlow, VolumeFlow volumeFlow)
85+
{
86+
return Density.FromKilogramsPerCubicMeter(massFlow.KilogramsPerSecond / volumeFlow.CubicMetersPerSecond);
87+
}
88+
89+
public static VolumeFlow operator /(MassFlow massFlow, Density density)
90+
{
91+
return VolumeFlow.FromCubicMetersPerSecond(massFlow.KilogramsPerSecond / density.KilogramsPerCubicMeter);
92+
}
8393
#endif
8494
}
85-
}
95+
}

UnitsNet/CustomCode/Quantities/VolumeFlow.extra.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ public partial struct VolumeFlow
5353
{
5454
return Area.FromSquareMeters(volumeFlow.CubicMetersPerSecond / speed.MetersPerSecond);
5555
}
56+
57+
public static MassFlow operator *(VolumeFlow volumeFlow, Density density)
58+
{
59+
return MassFlow.FromKilogramsPerSecond(volumeFlow.CubicMetersPerSecond * density.KilogramsPerCubicMeter);
60+
}
61+
62+
public static MassFlow operator *(Density density, VolumeFlow volumeFlow)
63+
{
64+
return MassFlow.FromKilogramsPerSecond(volumeFlow.CubicMetersPerSecond * density.KilogramsPerCubicMeter);
65+
}
5666
#endif
5767
}
5868
}

0 commit comments

Comments
 (0)