package mods.eln.sim;
public class ThermalLoad {
public double Tc, Rp, Rs, C, PcTemp, Pc, Prs, Psp, PrsTemp = 0, PspTemp = 0;
boolean isSlow;
public ThermalLoad() {
setHighImpedance();
Tc = 0;
PcTemp = 0;
Pc = 0;
Prs = 0;
Psp = 0;
}
public ThermalLoad(double Tc, double Rp, double Rs, double C) {
this.Tc = Tc;
this.Rp = Rp;
this.Rs = Rs;
this.C = C;
PcTemp = 0;
}
public void setRsByTao(double tao) {
Rs = tao / C;
}
public void setHighImpedance() {
Rs = 1000000000.0;
C = 1;
Rp = 1000000000.0;
}
public static final ThermalLoad externalLoad = new ThermalLoad(0, 0, 0, 0);
public void setRp(double Rp) {
this.Rp = Rp;
}
public double getPower() {
return (Prs + Math.abs(Pc) + Tc / Rp + Psp) / 2;
}
public void set(double Rs, double Rp, double C) {
this.Rp = Rp;
this.Rs = Rs;
this.C = C;
}
public static void moveEnergy(double energy, double time, ThermalLoad from, ThermalLoad to) {
double I = energy / time;
double absI = Math.abs(I);
from.PcTemp -= I;
to.PcTemp += I;
from.PspTemp += absI;
to.PspTemp += absI;
}
public static void movePower(double power, ThermalLoad from, ThermalLoad to) {
double absI = Math.abs(power);
from.PcTemp -= power;
to.PcTemp += power;
from.PspTemp += absI;
to.PspTemp += absI;
}
public void movePowerTo(double power) {
double absI = Math.abs(power);
PcTemp += power;
PspTemp += absI;
}
public double getT() {
return Tc;
}
public boolean isSlow() {
return isSlow;
}
public void setAsSlow() {
isSlow = true;
}
public void setAsFast() {
isSlow = false;
}
}