use of org.concord.energy3d.model.ParabolicTrough in project energy3d by concord-consortium.
the class GroupDailyAnalysis method updateGraph.
@Override
public void updateGraph() {
final int n = (int) Math.round(60.0 / Scene.getInstance().getTimeStep());
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
for (final HousePart p : selectedParts) {
final String customText = p.getLabelCustomText();
if (p instanceof Window) {
final Window window = (Window) p;
final double solar = p.getSolarPotentialNow() * window.getSolarHeatGainCoefficient();
graph.addData("Solar " + p.getId(), solar);
final double[] loss = p.getHeatLoss();
final int t0 = n * i;
double sum = 0;
for (int k = t0; k < t0 + n; k++) {
sum += loss[k];
}
graph.addData("Heat Gain " + p.getId(), -sum);
} else if (p instanceof Wall || p instanceof Roof) {
final double[] loss = p.getHeatLoss();
final int t0 = n * i;
double sum = 0;
for (int k = t0; k < t0 + n; k++) {
sum += loss[k];
}
graph.addData("Heat Gain " + p.getId(), -sum);
} else if (p instanceof SolarPanel) {
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, ((SolarPanel) p).getYieldNow());
} else {
graph.addData("Solar " + p.getId(), ((SolarPanel) p).getYieldNow());
}
} else if (p instanceof Rack) {
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, ((Rack) p).getYieldNow());
} else {
graph.addData("Solar " + p.getId(), ((Rack) p).getYieldNow());
}
} else if (p instanceof Mirror) {
final Mirror mirror = (Mirror) p;
final double solar = mirror.getSolarPotentialNow() * mirror.getSystemEfficiency();
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, solar);
} else {
graph.addData("Solar " + p.getId(), solar);
}
} else if (p instanceof ParabolicTrough) {
final ParabolicTrough trough = (ParabolicTrough) p;
final double solar = trough.getSolarPotentialNow() * trough.getSystemEfficiency();
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, solar);
} else {
graph.addData("Solar " + p.getId(), solar);
}
} else if (p instanceof ParabolicDish) {
final ParabolicDish dish = (ParabolicDish) p;
final double solar = dish.getSolarPotentialNow() * dish.getSystemEfficiency();
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, solar);
} else {
graph.addData("Solar " + p.getId(), solar);
}
} else if (p instanceof FresnelReflector) {
final FresnelReflector reflector = (FresnelReflector) p;
final double solar = reflector.getSolarPotentialNow() * reflector.getSystemEfficiency();
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, solar);
} else {
graph.addData("Solar " + p.getId(), solar);
}
} else if (p instanceof Foundation) {
final boolean mean = group.getType().endsWith("(Mean)");
final Foundation foundation = (Foundation) p;
switch(foundation.getProjectType()) {
case Foundation.TYPE_PV_PROJECT:
double pv = foundation.getPhotovoltaicNow();
if (mean) {
pv /= foundation.getNumberOfSolarPanels();
if (customText != null) {
graph.addData("PV " + p.getId() + graph.getDataNameDelimiter() + customText + " mean", pv);
} else {
graph.addData("PV " + p.getId() + " mean", pv);
}
} else {
if (customText != null) {
graph.addData("PV " + p.getId() + graph.getDataNameDelimiter() + customText, pv);
} else {
graph.addData("PV " + p.getId(), pv);
}
}
break;
case Foundation.TYPE_CSP_PROJECT:
double csp = foundation.getCspNow();
if (mean) {
csp /= foundation.countParts(new Class[] { Mirror.class, ParabolicTrough.class, ParabolicDish.class });
if (customText != null) {
graph.addData("CSP " + p.getId() + graph.getDataNameDelimiter() + customText + " mean", csp);
} else {
graph.addData("CSP " + p.getId() + " mean", csp);
}
} else {
if (customText != null) {
graph.addData("CSP " + p.getId() + graph.getDataNameDelimiter() + customText, csp);
} else {
graph.addData("CSP " + p.getId(), csp);
}
}
break;
case Foundation.TYPE_BUILDING:
final double totalEnergy = foundation.getTotalEnergyNow();
graph.addData("Building " + p.getId(), totalEnergy);
break;
}
}
}
}
graph.repaint();
}
use of org.concord.energy3d.model.ParabolicTrough in project energy3d by concord-consortium.
the class ParabolicTroughDailyAnalysis method updateGraph.
@Override
public void updateGraph() {
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart != null) {
if (selectedPart instanceof ParabolicTrough) {
final ParabolicTrough t = (ParabolicTrough) selectedPart;
graph.addData("Solar", t.getSolarPotentialNow() * t.getSystemEfficiency());
} else if (selectedPart instanceof Foundation) {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof ParabolicTrough && p.getTopContainer() == selectedPart) {
final ParabolicTrough t = (ParabolicTrough) p;
output += t.getSolarPotentialNow() * t.getSystemEfficiency();
}
}
graph.addData("Solar", output);
} else if (selectedPart.getTopContainer() instanceof Foundation) {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof ParabolicTrough && p.getTopContainer() == selectedPart.getTopContainer()) {
final ParabolicTrough t = (ParabolicTrough) p;
output += t.getSolarPotentialNow() * t.getSystemEfficiency();
}
}
graph.addData("Solar", output);
}
} else {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof ParabolicTrough) {
final ParabolicTrough t = (ParabolicTrough) p;
output += t.getSolarPotentialNow() * t.getSystemEfficiency();
}
}
graph.addData("Solar", output);
}
}
graph.repaint();
}
use of org.concord.energy3d.model.ParabolicTrough in project energy3d by concord-consortium.
the class ChangeFoundationParabolicTroughAzimuthCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = troughs.size();
for (int i = 0; i < n; i++) {
final ParabolicTrough t = troughs.get(i);
t.setRelativeAzimuth(newValues[i]);
t.draw();
}
SceneManager.getInstance().refresh();
}
use of org.concord.energy3d.model.ParabolicTrough in project energy3d by concord-consortium.
the class ChangeAzimuthForAllParabolicTroughsCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = troughs.size();
for (int i = 0; i < n; i++) {
final ParabolicTrough t = troughs.get(i);
t.setRelativeAzimuth(newValues[i]);
t.draw();
}
SceneManager.getInstance().refresh();
}
use of org.concord.energy3d.model.ParabolicTrough in project energy3d by concord-consortium.
the class SetShapeForAllParabolicTroughsCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = troughs.size();
for (int i = 0; i < n; i++) {
final ParabolicTrough t = troughs.get(i);
t.setTroughLength(newLengths[i]);
t.setApertureWidth(newApertureWidths[i]);
t.setSemilatusRectum(newSemilatusRecta[i]);
t.setModuleLength(newModuleLengths[i]);
t.draw();
}
SceneManager.getInstance().refresh();
}
Aggregations