use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class SceneManager method newPart.
private HousePart newPart() {
final HousePart drawn;
setGridsVisible(false);
if (operation == Operation.DRAW_WALL) {
drawn = new Wall();
drawn.setColor(Scene.getInstance().getWallColor());
} else if (operation == Operation.DRAW_DOOR) {
drawn = new Door();
drawn.setColor(Scene.getInstance().getDoorColor());
} else if (operation == Operation.DRAW_WINDOW) {
drawn = new Window();
} else if (operation == Operation.DRAW_ROOF_PYRAMID) {
drawn = new PyramidRoof();
drawn.setColor(Scene.getInstance().getRoofColor());
} else if (operation == Operation.DRAW_ROOF_HIP) {
drawn = new HipRoof();
drawn.setColor(Scene.getInstance().getRoofColor());
} else if (operation == Operation.DRAW_ROOF_SHED) {
drawn = new ShedRoof();
drawn.setColor(Scene.getInstance().getRoofColor());
} else if (operation == Operation.DRAW_ROOF_GAMBREL) {
drawn = new GambrelRoof();
drawn.setColor(Scene.getInstance().getRoofColor());
} else if (operation == Operation.DRAW_ROOF_CUSTOM) {
drawn = new CustomRoof();
drawn.setColor(Scene.getInstance().getRoofColor());
} else if (operation == Operation.DRAW_FLOOR) {
drawn = new Floor();
drawn.setColor(Scene.getInstance().getFloorColor());
} else if (operation == Operation.DRAW_SOLAR_PANEL) {
drawn = new SolarPanel();
} else if (operation == Operation.DRAW_RACK) {
drawn = new Rack();
} else if (operation == Operation.DRAW_MIRROR) {
drawn = new Mirror();
} else if (operation == Operation.DRAW_PARABOLIC_TROUGH) {
drawn = new ParabolicTrough();
} else if (operation == Operation.DRAW_PARABOLIC_DISH) {
drawn = new ParabolicDish();
} else if (operation == Operation.DRAW_FRESNEL_REFLECTOR) {
drawn = new FresnelReflector();
} else if (operation == Operation.DRAW_SENSOR) {
drawn = new Sensor();
} else if (operation == Operation.DRAW_FOUNDATION) {
drawn = new Foundation();
setGridsVisible(Scene.getInstance().isSnapToGrids());
drawn.setColor(Scene.getInstance().getFoundationColor());
} else if (operation == Operation.DRAW_DOGWOOD) {
drawn = new Tree(Tree.DOGWOOD);
setGridsVisible(true);
} else if (operation == Operation.DRAW_ELM) {
drawn = new Tree(Tree.ELM);
setGridsVisible(true);
} else if (operation == Operation.DRAW_OAK) {
drawn = new Tree(Tree.OAK);
setGridsVisible(true);
} else if (operation == Operation.DRAW_LINDEN) {
drawn = new Tree(Tree.LINDEN);
setGridsVisible(true);
} else if (operation == Operation.DRAW_COTTONWOOD) {
drawn = new Tree(Tree.COTTONWOOD);
setGridsVisible(true);
} else if (operation == Operation.DRAW_MAPLE) {
drawn = new Tree(Tree.MAPLE);
setGridsVisible(true);
} else if (operation == Operation.DRAW_PINE) {
drawn = new Tree(Tree.PINE);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JANE) {
drawn = new Human(Human.JANE);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JENI) {
drawn = new Human(Human.JENI);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JILL) {
drawn = new Human(Human.JILL);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JACK) {
drawn = new Human(Human.JACK);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JOHN) {
drawn = new Human(Human.JOHN);
setGridsVisible(true);
} else if (operation == Operation.DRAW_JOSE) {
drawn = new Human(Human.JOSE);
setGridsVisible(true);
} else {
return null;
}
Scene.getInstance().add(drawn, false);
addPartCommand = new AddPartCommand(drawn);
return drawn;
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class SceneManager method rotate.
public void rotate(final double angle) {
if (SceneManager.getInstance().getSolarHeatMap()) {
EnergyPanel.getInstance().updateRadiationHeatMap();
}
taskManager.update(new Callable<Object>() {
@Override
public Object call() {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof Foundation) {
final RotateBuildingCommand c = new RotateBuildingCommand((Foundation) selectedPart, angle);
SceneManager.getInstance().rotateFoundation(angle, true);
SceneManager.getInstance().getUndoManager().addEdit(c);
} else if (selectedPart instanceof SolarPanel) {
final SolarPanel solarPanel = (SolarPanel) selectedPart;
final ChangeAzimuthCommand c = new ChangeAzimuthCommand(solarPanel);
solarPanel.setRelativeAzimuth(solarPanel.getRelativeAzimuth() + Math.toDegrees(angle));
solarPanel.draw();
SceneManager.getInstance().getUndoManager().addEdit(c);
} else if (selectedPart instanceof Rack) {
final Rack rack = (Rack) selectedPart;
final ChangeAzimuthCommand c = new ChangeAzimuthCommand(rack);
rack.setRelativeAzimuth(rack.getRelativeAzimuth() + Math.toDegrees(angle));
rack.draw();
SceneManager.getInstance().getUndoManager().addEdit(c);
} else if (selectedPart instanceof Mirror) {
final Mirror mirror = (Mirror) selectedPart;
final ChangeAzimuthCommand c = new ChangeAzimuthCommand(mirror);
mirror.setRelativeAzimuth(mirror.getRelativeAzimuth() + Math.toDegrees(angle));
mirror.draw();
SceneManager.getInstance().getUndoManager().addEdit(c);
} else if (selectedPart == null) {
final RotateBuildingCommand c = new RotateBuildingCommand(null, angle);
rotateAllFoundations(angle);
SceneManager.getInstance().getUndoManager().addEdit(c);
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
EnergyPanel.getInstance().updateProperties();
}
});
return null;
}
});
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class DataViewer method viewRawData.
static void viewRawData(final java.awt.Window parent, final Graph graph, final boolean selectAll) {
String[] header = null;
if (graph instanceof BuildingEnergyDailyGraph) {
header = new String[] { "Hour", "Windows", "Solar Panels", "Heater", "AC", "Net" };
} else if (graph instanceof BuildingEnergyAnnualGraph) {
header = new String[] { "Month", "Windows", "Solar Panels", "Heater", "AC", "Net" };
} else if (graph instanceof PartEnergyDailyGraph) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectAll || selectedPart instanceof SolarPanel || selectedPart instanceof Rack || selectedPart instanceof Mirror || selectedPart instanceof Foundation) {
header = new String[] { "Hour", "Solar" };
} else if (selectedPart instanceof Wall || selectedPart instanceof Roof || selectedPart instanceof Door) {
header = new String[] { "Hour", "Heat Gain" };
} else if (selectedPart instanceof Window) {
header = new String[] { "Hour", "Solar", "Heat Gain" };
}
if (graph.instrumentType == Graph.SENSOR) {
final List<HousePart> parts = Scene.getInstance().getParts();
final List<String> sensorList = new ArrayList<String>();
for (final HousePart p : parts) {
if (p instanceof Sensor) {
final Sensor sensor = (Sensor) p;
sensorList.add("Light: #" + sensor.getId());
sensorList.add("Heat Flux: #" + sensor.getId());
}
}
if (!sensorList.isEmpty()) {
header = new String[1 + sensorList.size()];
header[0] = "Hour";
for (int i = 1; i < header.length; i++) {
header[i] = sensorList.get(i - 1);
}
}
}
} else if (graph instanceof PartEnergyAnnualGraph) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectAll || selectedPart instanceof SolarPanel || selectedPart instanceof Rack || selectedPart instanceof Mirror || selectedPart instanceof Foundation) {
header = new String[] { "Month", "Solar" };
} else if (selectedPart instanceof Wall || selectedPart instanceof Roof || selectedPart instanceof Door) {
header = new String[] { "Month", "Heat Gain" };
} else if (selectedPart instanceof Window) {
header = new String[] { "Month", "Solar", "Heat Gain" };
}
if (graph.instrumentType == Graph.SENSOR) {
final List<HousePart> parts = Scene.getInstance().getParts();
final List<String> sensorList = new ArrayList<String>();
for (final HousePart p : parts) {
if (p instanceof Sensor) {
final Sensor sensor = (Sensor) p;
sensorList.add("Light: #" + sensor.getId());
sensorList.add("Heat Flux: #" + sensor.getId());
}
}
if (!sensorList.isEmpty()) {
header = new String[1 + sensorList.size()];
header[0] = "Month";
for (int i = 1; i < header.length; i++) {
header[i] = sensorList.get(i - 1);
}
}
}
} else if (graph instanceof BuildingEnergyAngularGraph) {
header = new String[] { "Degree", "Windows", "Solar Panels", "Heater", "AC", "Net" };
} else if (graph instanceof PartEnergyAngularGraph) {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart instanceof SolarPanel || selectedPart instanceof Rack || selectedPart instanceof Mirror || selectedPart instanceof Foundation) {
header = new String[] { "Degree", "Solar" };
} else if (selectedPart instanceof Wall || selectedPart instanceof Roof || selectedPart instanceof Door) {
header = new String[] { "Degree", "Heat Gain" };
} else if (selectedPart instanceof Window) {
header = new String[] { "Degree", "Solar", "Heat Gain" };
}
}
if (header == null) {
JOptionPane.showMessageDialog(MainFrame.getInstance(), "Problem in finding data.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
final int m = header.length;
final int n = graph.getLength();
final Object[][] column = new Object[n][m + 1];
for (int i = 0; i < n; i++) {
column[i][0] = header[0].equals("Hour") ? i : (i + 1);
}
for (int j = 1; j < m; j++) {
final List<Double> list = graph.getData(header[j]);
for (int i = 0; i < n; i++) {
column[i][j] = list.get(i);
}
}
showDataWindow("Data", column, header, parent);
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class GroupAnnualAnalysis method updateGraph.
@Override
public void updateGraph() {
for (final HousePart p : selectedParts) {
final String customText = p.getLabelCustomText();
if (p instanceof Window) {
final Window window = (Window) p;
final double solar = p.getSolarPotentialToday() * window.getSolarHeatGainCoefficient();
graph.addData("Solar " + p.getId(), solar);
final double[] loss = p.getHeatLoss();
double sum = 0;
for (final double x : loss) {
sum += x;
}
graph.addData("Heat Gain " + p.getId(), -sum);
} else if (p instanceof Wall || p instanceof Roof) {
final double[] loss = p.getHeatLoss();
double sum = 0;
for (final double x : loss) {
sum += x;
}
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).getYieldToday());
} else {
graph.addData("Solar " + p.getId(), ((SolarPanel) p).getYieldToday());
}
} else if (p instanceof Rack) {
if (customText != null) {
graph.addData("Solar " + p.getId() + graph.getDataNameDelimiter() + customText, ((Rack) p).getYieldToday());
} else {
graph.addData("Solar " + p.getId(), ((Rack) p).getYieldToday());
}
} else if (p instanceof Mirror) {
final Mirror mirror = (Mirror) p;
final double solar = mirror.getSolarPotentialToday() * 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.getSolarPotentialToday() * 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.getSolarPotentialToday() * 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.getSolarPotentialToday() * 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.getPhotovoltaicToday();
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.getCspToday();
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.getTotalEnergyToday();
graph.addData("Building " + p.getId(), totalEnergy);
break;
}
}
}
graph.repaint();
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class HeliostatAnnualAnalysis method updateGraph.
@Override
public void updateGraph() {
final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
if (selectedPart != null) {
if (selectedPart instanceof Mirror) {
final Mirror m = (Mirror) selectedPart;
graph.addData("Solar", m.getSolarPotentialToday() * m.getSystemEfficiency());
} else if (selectedPart instanceof Foundation) {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof Mirror && p.getTopContainer() == selectedPart) {
final Mirror m = (Mirror) p;
output += m.getSolarPotentialToday() * m.getSystemEfficiency();
}
}
graph.addData("Solar", output);
} else if (selectedPart.getTopContainer() instanceof Foundation) {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof Mirror && p.getTopContainer() == selectedPart.getTopContainer()) {
final Mirror m = (Mirror) p;
output += m.getSolarPotentialToday() * m.getSystemEfficiency();
}
}
graph.addData("Solar", output);
}
} else {
double output = 0;
for (final HousePart p : Scene.getInstance().getParts()) {
if (p instanceof Mirror) {
final Mirror m = (Mirror) p;
output += m.getSolarPotentialToday() * m.getSystemEfficiency();
}
}
graph.addData("Solar", output);
}
graph.repaint();
}
Aggregations