diff --git a/csharp/Lib/Units/Composite/AcPower.cs b/csharp/Lib/Units/Composite/AcPower.cs index e525233fd..5e38cb07e 100644 --- a/csharp/Lib/Units/Composite/AcPower.cs +++ b/csharp/Lib/Units/Composite/AcPower.cs @@ -6,8 +6,6 @@ namespace InnovEnergy.Lib.Units.Composite; public sealed class AcPower { - private AcPower(){} - public required ApparentPower Apparent { get; init; } public required ActivePower Active { get; init; } public required ReactivePower Reactive { get; init; } @@ -84,23 +82,36 @@ public sealed class AcPower }; } - public static AcPower Null => FromVoltageCurrentPhi(0, 0, 0); + public static AcPower operator +(AcPower left, AcPower right) + { + return FromActiveReactive + ( + left.Active + right.Active, + left.Reactive + right.Reactive + ); + } + + public static AcPower operator -(AcPower left, AcPower right) + { + return left + -right; + } + + public static AcPower operator -(AcPower p) + { + var activePower = -p.Active; + var reactivePower = -p.Reactive; + + return FromActiveReactive + ( + activePower, + reactivePower + ); + } + + + public static implicit operator AcPower(Double p) => FromActiveReactive(p, 0); + public static implicit operator AcPower(Int32 p) => FromActiveReactive(p, 0); - public static AcPower operator +(AcPower left, AcPower right) => FromActiveReactive - ( - left.Active + right.Active, - left.Reactive + right.Reactive - ); - public static AcPower operator -(AcPower left, AcPower right) => FromActiveReactive - ( - left.Active - right.Active, - left.Reactive - right.Reactive - ); - - public static AcPower operator -(AcPower p) => FromActiveReactive(-p.Active, p.Reactive); - - - public override String ToString() => Active.ToString(); // TODO: show all } \ No newline at end of file