+// Copyright Jerome Benoit. 2021-2024. All Rights Reserved.
+
+/**
+ * Rationale: https://wiki.piment-noir.org/doku.php/en:cs:modelling_multi-phased_electrical_system_interconnexion
+ */
+
/**
* Targeted to AC related values calculation.
- * To use for DC, always consider cosPhi = 1 and do not use per phase helpers
*/
-export default class ElectricUtils {
- static ampTotal(nbOfPhases: number, Iph: number): number {
- return nbOfPhases * Iph;
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
+export class ACElectricUtils {
+ private constructor () {
+ // This is intentional
}
- static powerPerPhase(V: number, Iph: number, cosPhi = 1): number {
- const powerPerPhase = V * Iph * cosPhi;
+ static powerTotal (nbOfPhases: number, V: number, Iph: number, cosPhi = 1): number {
+ return nbOfPhases * ACElectricUtils.powerPerPhase(V, Iph, cosPhi)
+ }
+
+ static powerPerPhase (V: number, Iph: number, cosPhi = 1): number {
+ const powerPerPhase = V * Iph * cosPhi
if (cosPhi === 1) {
- return powerPerPhase;
+ return powerPerPhase
}
- return Math.round(powerPerPhase);
+ return Math.round(powerPerPhase)
}
- static powerTotal(nbOfPhases: number, V: number, Iph: number, cosPhi = 1): number {
- return nbOfPhases * ElectricUtils.powerPerPhase(V, Iph, cosPhi);
+ static amperageTotal (nbOfPhases: number, Iph: number): number {
+ return nbOfPhases * Iph
}
- static ampTotalFromPower(P: number, V: number, cosPhi = 1): number {
- const power = P / (V * cosPhi);
+ static amperageTotalFromPower (P: number, V: number, cosPhi = 1): number {
+ const amperage = P / (V * cosPhi)
if (cosPhi === 1 && P % V === 0) {
- return power;
+ return amperage
+ }
+ return Math.round(amperage)
+ }
+
+ static amperagePerPhaseFromPower (nbOfPhases: number, P: number, V: number, cosPhi = 1): number {
+ const amperage = ACElectricUtils.amperageTotalFromPower(P, V, cosPhi)
+ const amperagePerPhase = amperage / nbOfPhases
+ if (amperage % nbOfPhases === 0) {
+ return amperagePerPhase
}
- return Math.round(power);
+ return Math.round(amperagePerPhase)
+ }
+}
+
+/**
+ * Targeted to DC related values calculation.
+ */
+// eslint-disable-next-line @typescript-eslint/no-extraneous-class
+export class DCElectricUtils {
+ private constructor () {
+ // This is intentional
+ }
+
+ static power (V: number, I: number): number {
+ return V * I
}
- static ampPerPhaseFromPower(nbOfPhases: number, P: number, V: number, cosPhi = 1): number {
- const power = ElectricUtils.ampTotalFromPower(P, V, cosPhi);
- const powerPerPhase = power / nbOfPhases;
- if (power % nbOfPhases === 0) {
- return powerPerPhase;
+ static amperage (P: number, V: number): number {
+ const amperage = P / V
+ if (P % V === 0) {
+ return amperage
}
- return Math.round(powerPerPhase);
+ return Math.round(amperage)
}
}