bereken static method

(double, double) bereken(
  1. Invoer invoer,
  2. KabelSpec kabel, {
  3. double? iOverride,
})

Berekent (ΔU_volt, ΔU_procent) voor het gegeven systeem. iOverride vervangt invoer.effectieveStroom (gebruik voor parallel kabels: I/n).

Implementation

static (double, double) bereken(Invoer invoer, KabelSpec kabel,
    {double? iOverride}) {
  final I = iOverride ?? invoer.effectieveStroom;
  final L = invoer.lengteM;
  final tMax = isolatieEigenschappen[kabel.isolatie]!.maxTempContinu;

  var deltaU = 0.0;

  switch (invoer.systeem) {
    case Systeemtype.ac1Fase:
      final R = _rOpTemp(kabel.rAcPerKm20C, kabel.geleider, tMax);
      final X = kabel.xAcPerKm / 1000.0;
      final sinPhi = sqrt(max(0.0, 1 - invoer.cosPhi * invoer.cosPhi));
      deltaU = 2.0 * I * L * (R * invoer.cosPhi + X * sinPhi);

    case Systeemtype.ac3Fase:
      final R = _rOpTemp(kabel.rAcPerKm20C, kabel.geleider, tMax);
      final X = kabel.xAcPerKm / 1000.0;
      final sinPhi = sqrt(max(0.0, 1 - invoer.cosPhi * invoer.cosPhi));
      deltaU = sqrt(3) * I * L * (R * invoer.cosPhi + X * sinPhi);

    case Systeemtype.dc2Draad:
      final prop = geleiderEigenschappen[kabel.geleider]!;
      final rDcM = prop.rDc(kabel.doorsnedemm2, 1.0, t: tMax);
      deltaU = 2.0 * I * rDcM * L;

    case Systeemtype.dcAarde:
      final prop = geleiderEigenschappen[kabel.geleider]!;
      final rDcM = prop.rDc(kabel.doorsnedemm2, 1.0, t: tMax);
      deltaU = I * rDcM * L;
  }

  final pct = invoer.spanningV > 0 ? 100.0 * deltaU / invoer.spanningV : 0.0;
  return (deltaU, pct);
}