Search in sources :

Example 21 with Mirror

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();
}
Also used : Mirror(org.concord.energy3d.model.Mirror)

Example 22 with Mirror

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();
}
Also used : Mirror(org.concord.energy3d.model.Mirror)

Example 23 with Mirror

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();
}
Also used : ParabolicDish(org.concord.energy3d.model.ParabolicDish) ParabolicTrough(org.concord.energy3d.model.ParabolicTrough) FresnelReflector(org.concord.energy3d.model.FresnelReflector) Mirror(org.concord.energy3d.model.Mirror)

Example 24 with Mirror

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;
}
Also used : FresnelReflector(org.concord.energy3d.model.FresnelReflector) SolarCollector(org.concord.energy3d.model.SolarCollector) ArrayList(java.util.ArrayList) Foundation(org.concord.energy3d.model.Foundation) Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart)

Example 25 with Mirror

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();
}
Also used : Mirror(org.concord.energy3d.model.Mirror) HousePart(org.concord.energy3d.model.HousePart)

Aggregations

Mirror (org.concord.energy3d.model.Mirror)55 HousePart (org.concord.energy3d.model.HousePart)35 Foundation (org.concord.energy3d.model.Foundation)29 FresnelReflector (org.concord.energy3d.model.FresnelReflector)21 Rack (org.concord.energy3d.model.Rack)21 SolarPanel (org.concord.energy3d.model.SolarPanel)19 ParabolicDish (org.concord.energy3d.model.ParabolicDish)17 ParabolicTrough (org.concord.energy3d.model.ParabolicTrough)17 Window (org.concord.energy3d.model.Window)16 Wall (org.concord.energy3d.model.Wall)14 Door (org.concord.energy3d.model.Door)11 Roof (org.concord.energy3d.model.Roof)11 ArrayList (java.util.ArrayList)10 Calendar (java.util.Calendar)5 List (java.util.List)5 JDialog (javax.swing.JDialog)5 Human (org.concord.energy3d.model.Human)5 Tree (org.concord.energy3d.model.Tree)5 ActionEvent (java.awt.event.ActionEvent)4 ActionListener (java.awt.event.ActionListener)4