using InnovEnergy.Lib.Utils; using static DecimalMath.DecimalEx; namespace InnovEnergy.Lib.Units.Composite; public record Ac3Phase { public required AcPhase L1 { get; init; } public required AcPhase L2 { get; init; } public required AcPhase L3 { get; init; } public required Frequency Frequency { get; init; } public ApparentPower ApparentPower => L1.ApparentPower + L2.ApparentPower + L3.ApparentPower; public ReactivePower ReactivePower => L1.ReactivePower + L2.ReactivePower + L3.ReactivePower; public Power ActivePower => L1.ActivePower + L2.ActivePower + L3.ActivePower; public Angle Phi => ATan2(ReactivePower, ActivePower); public static Ac3Phase operator |(Ac3Phase left, Ac3Phase right) => OpParallel(left, right); private static readonly Func OpParallel = "|".CreateBinaryOpForProps(); }