package mods.eln.transparentnode.turbine;
import mods.eln.Eln;
import mods.eln.sim.IProcess;
import mods.eln.sim.PhysicalConstant;
import mods.eln.sim.mna.component.VoltageSource;
public class TurbineThermalProcess implements IProcess {
private final TurbineElement turbine;
private double efficiency = 0.0;
public TurbineThermalProcess(TurbineElement t) {
this.turbine = t;
}
public double getEfficiency() {
return efficiency;
}
@Override
public void process(double time) {
TurbineDescriptor descriptor = turbine.descriptor;
VoltageSource src = turbine.electricalPowerSourceProcess;
efficiency = Math.abs(1 - (turbine.coolLoad.Tc + PhysicalConstant.Tref) / (turbine.warmLoad.Tc + PhysicalConstant.Tref));
if (efficiency < 0.05) efficiency = 0.05;
double E = src.getP() * time / Eln.instance.heatTurbinePowerFactor;
double Pout = E / time;
double Pin = descriptor.PoutToPin.getValue(Pout) / efficiency;
turbine.warmLoad.movePowerTo(-Pin);
turbine.coolLoad.movePowerTo(Pin * (1 - efficiency));
}
}