use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class ChangeTiltAngleForAllHeliostatsCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = mirrors.size();
for (int i = 0; i < n; i++) {
final Mirror m = mirrors.get(i);
m.setTiltAngle(newValues[i]);
m.draw();
}
SceneManager.getInstance().refresh();
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class ChangeTargetForAllHeliostatsCommand method redo.
@Override
public void redo() throws CannotRedoException {
super.redo();
final int n = mirrors.size();
for (int i = 0; i < n; i++) {
final Mirror m = mirrors.get(i);
m.setReceiver(newValues[i]);
m.draw();
if (oldValues[i] != null) {
oldValues[i].drawSolarReceiver();
}
if (newValues[i] != null) {
newValues[i].drawSolarReceiver();
}
}
SceneManager.getInstance().refresh();
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class CspProjectDailyEnergyGraph method updateGraph.
public void updateGraph() {
if (base == null) {
return;
}
graph.clearData();
final List<ParabolicTrough> troughs = base.getParabolicTroughs();
if (!troughs.isEmpty()) {
// favor parabolic troughs if there are also mirrors or Fresnel reflectors
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
double output = 0;
for (final ParabolicTrough t : troughs) {
output += t.getSolarPotentialNow() * t.getSystemEfficiency();
}
graph.addData("Solar", output);
}
} else {
final List<ParabolicDish> dishes = base.getParabolicDishes();
if (!dishes.isEmpty()) {
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
double output = 0;
for (final ParabolicDish d : dishes) {
output += d.getSolarPotentialNow() * d.getSystemEfficiency();
}
graph.addData("Solar", output);
}
} else {
final List<FresnelReflector> fresnels = base.getFresnelReflectors();
if (!fresnels.isEmpty()) {
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
double output = 0;
for (final FresnelReflector r : fresnels) {
output += r.getSolarPotentialNow() * r.getSystemEfficiency();
}
graph.addData("Solar", output);
}
} else {
final List<Mirror> mirrors = base.getHeliostats();
if (!mirrors.isEmpty()) {
for (int i = 0; i < 24; i++) {
SolarRadiation.getInstance().computeEnergyAtHour(i);
double output = 0;
for (final Mirror m : mirrors) {
output += m.getSolarPotentialNow() * m.getSystemEfficiency();
}
graph.addData("Solar", output);
}
}
}
}
}
repaint();
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class CspProjectCostGraph method calculateCost.
private void calculateCost() {
landSum = 0;
collectorSum = 0;
receiverSum = 0;
if (foundation.hasSolarReceiver()) {
receiverSum = CspProjectCost.getPartCost(foundation);
} else {
landSum = CspProjectCost.getPartCost(foundation);
final List<Mirror> mirrors = foundation.getHeliostats();
if (!mirrors.isEmpty()) {
final ArrayList<Foundation> towers = new ArrayList<Foundation>();
for (final Mirror m : mirrors) {
if (m.getReceiver() != null) {
if (!towers.contains(m.getReceiver())) {
towers.add(m.getReceiver());
}
}
}
if (!towers.isEmpty()) {
for (final Foundation tower : towers) {
receiverSum += CspProjectCost.getPartCost(tower);
}
}
} else {
final List<FresnelReflector> reflectors = foundation.getFresnelReflectors();
if (!reflectors.isEmpty()) {
final ArrayList<Foundation> absorbers = new ArrayList<Foundation>();
for (final FresnelReflector r : reflectors) {
if (r.getReceiver() != null) {
if (!absorbers.contains(r.getReceiver())) {
absorbers.add(r.getReceiver());
}
}
}
if (!absorbers.isEmpty()) {
for (final Foundation absorber : absorbers) {
receiverSum += CspProjectCost.getPartCost(absorber);
}
}
}
}
}
for (final HousePart p : Scene.getInstance().getParts()) {
if (p.getTopContainer() == foundation) {
if (p instanceof SolarCollector) {
// assuming that sensor doesn't cost anything
collectorSum += CspProjectCost.getPartCost(p);
}
}
}
totalCost = landSum + collectorSum + receiverSum;
}
use of org.concord.energy3d.model.Mirror in project energy3d by concord-consortium.
the class Scene method setAzimuthForAllHeliostats.
public void setAzimuthForAllHeliostats(final double angle) {
for (final HousePart p : parts) {
if (p instanceof Mirror) {
((Mirror) p).setRelativeAzimuth(angle);
p.draw();
}
}
SceneManager.getInstance().refresh();
}
Aggregations