Innovenergy_trunk/csharp/Lib/Units/ActivePower.cs

23 lines
1.0 KiB
C#
Raw Normal View History

2023-05-24 10:04:01 +00:00
using InnovEnergy.Lib.SrcGen;
using InnovEnergy.Lib.SrcGen.Attributes;
2023-05-04 07:36:30 +00:00
using InnovEnergy.Lib.Time.Unix;
namespace InnovEnergy.Lib.Units;
2023-05-24 10:04:01 +00:00
[Generate<Operators>][Generate<Sum>]
2023-05-04 07:36:30 +00:00
public readonly partial struct ActivePower
{
public static String Unit => "W";
public static String Symbol => "P";
// P=UI
public static Voltage operator /(ActivePower power, Current current) => new Voltage(power.Value / current.Value);
public static Current operator /(ActivePower power, Voltage voltage) => new Current(power.Value / voltage.Value);
2023-05-24 10:04:01 +00:00
2023-05-04 07:36:30 +00:00
public static Energy operator *(ActivePower power, TimeSpan timeSpan) => power.Value / 1000 * timeSpan.TotalHours;
public static Energy operator *(TimeSpan timeSpan, ActivePower power) => power.Value / 1000 * timeSpan.TotalHours;
public static Energy operator *(ActivePower power, UnixTimeSpan timeSpan) => power.Value * timeSpan.Ticks / 3_600_000;
public static Energy operator *(UnixTimeSpan timeSpan, ActivePower power) => power.Value * timeSpan.Ticks / 3_600_000;
}