Innovenergy_trunk/csharp/Lib/StatusData/Resistance.cs

35 lines
1.8 KiB
C#
Raw Normal View History

namespace InnovEnergy.Lib.StatusData;
2023-02-23 06:55:15 +00:00
public readonly struct Resistance
{
public static String Unit => "Ω";
public static String Symbol => "R";
public Decimal Value { get; }
public Resistance(Decimal value) => Value = value;
public override String ToString() => Value + Unit;
// series
public static Resistance operator +(Resistance left, Resistance right) => new Resistance(left.Value + right.Value);
// parallel
public static Resistance operator |(Resistance left, Resistance right) => new Resistance(1m / (1m / left.Value + 1m / right.Value));
// scalar multiplication
public static Resistance operator *(Decimal scalar , Resistance resistance) => new Resistance(scalar * resistance.Value);
public static Resistance operator *(Resistance resistance, Decimal scalar ) => new Resistance(scalar * resistance.Value);
public static Resistance operator *(Int32 scalar , Resistance resistance) => new Resistance(scalar * resistance.Value);
public static Resistance operator *(Resistance resistance, Int32 scalar ) => new Resistance(scalar * resistance.Value);
public static Resistance operator /(Resistance resistance, Decimal scalar ) => new Resistance(resistance.Value / scalar);
public static Resistance operator /(Resistance resistance, Int32 scalar ) => new Resistance(resistance.Value / scalar);
// U=RI
public static Voltage operator *(Resistance resistance, Current current) => new Voltage(resistance.Value* current.Value);
// public static Voltage operator /(Power power, Current current) => new Voltage(power.Value / current.Value);
// public static Current operator /(Power power, Voltage voltage) => new Current(power.Value / voltage.Value);
}