35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using InnovEnergy.Lib.Units.Power;
|
|
using static System.Math;
|
|
|
|
namespace InnovEnergy.Lib.Units.Composite;
|
|
|
|
public record AcPower
|
|
{
|
|
public required ActivePower Active { get; init; }
|
|
public required ReactivePower Reactive { get; init; }
|
|
|
|
public ApparentPower Apparent => Sqrt(Active * Active + Reactive * Reactive);
|
|
|
|
public static AcPower operator +(AcPower left, AcPower right) => new AcPower
|
|
{
|
|
Active = left.Active + right.Active,
|
|
Reactive = left.Reactive + right.Reactive
|
|
};
|
|
|
|
public static AcPower operator -(AcPower left, AcPower right) => new AcPower
|
|
{
|
|
Active = left.Active - right.Active,
|
|
Reactive = left.Reactive - right.Reactive
|
|
};
|
|
|
|
public static AcPower operator -(AcPower p) => new AcPower
|
|
{
|
|
Active = -p.Active,
|
|
Reactive = -p.Reactive
|
|
};
|
|
|
|
public static implicit operator AcPower(Double p) => new AcPower { Active = p, Reactive = 0 };
|
|
public static implicit operator AcPower(Int32 p) => new AcPower { Active = p, Reactive = 0 };
|
|
|
|
public static AcPower Zero => new AcPower { Active = 0, Reactive = 0, };
|
|
} |