Search in sources :

Example 1 with DesignSpecs

use of org.concord.energy3d.simulation.DesignSpecs in project energy3d by concord-consortium.

the class Scene method init.

private void init() {
    root.detachAllChildren();
    originalHouseRoot.detachAllChildren();
    notReceivingShadowRoot.detachAllChildren();
    root.attachChild(originalHouseRoot);
    root.attachChild(notReceivingShadowRoot);
    if (url != null) {
        for (final HousePart p : parts) {
            final boolean b = p instanceof Tree || p instanceof Human;
            (b ? notReceivingShadowRoot : originalHouseRoot).attachChild(p.getRoot());
        }
        System.out.println("initSceneNow done");
    }
    root.updateWorldBound(true);
    SceneManager.getInstance().updateHeliodonAndAnnotationSize();
    SceneManager.getInstance().setAxesVisible(!hideAxes);
    SceneManager.getInstance().getSolarLand().setVisible(solarMapForLand);
    setTheme(theme);
    SceneManager.getInstance().getLand().setDefaultColor(landColor != null ? landColor : new ColorRGBA(0, 1, 0, 0.5f));
    PvModulesData.getInstance();
    final EnergyPanel energyPanel = EnergyPanel.getInstance();
    if (calendar != null) {
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        if (url == null) {
            // if a new file is created, its default time is always set to noon so that the user does not get a dark night scene
            calendar.set(Calendar.HOUR_OF_DAY, 12);
            calendar.set(Calendar.MINUTE, 0);
        }
        final Date time = calendar.getTime();
        Heliodon.getInstance().setDate(time);
        Heliodon.getInstance().setTime(time);
        Util.setSilently(energyPanel.getDateSpinner(), time);
        Util.setSilently(energyPanel.getTimeSpinner(), time);
        if ("Boston".equals(city) || city == null || "".equals(city)) {
            city = "Boston, MA";
            latitude = 42;
        }
        // already silent
        energyPanel.setLatitude(latitude);
        Util.selectSilently(energyPanel.getCityComboBox(), city);
        final LocationData ld = LocationData.getInstance();
        if (ld.getLatitudes().get(city) != null) {
            energyPanel.getCityComboBox().setToolTipText("<html>(" + ld.getLatitudes().get(city) + "&deg;, " + ld.getLongitudes().get(city) + "&deg;), elevation " + ld.getAltitudes().get(city).intValue() + "m<br>Use Edit>Set Region... to select country and region.</html>");
        } else {
            JOptionPane.showMessageDialog(MainFrame.getInstance(), city + " not supported. Please upgrade your Energy3D to the latest.", "Missing City", JOptionPane.ERROR_MESSAGE);
        }
        Scene.getInstance().updateTreeLeaves();
        SceneManager.getInstance().changeSkyTexture();
        if (!first) {
            SceneManager.getInstance().setHeliodonVisible(isHeliodonVisible);
            Util.selectSilently(MainPanel.getInstance().getHeliodonButton(), isHeliodonVisible);
            EventQueue.invokeLater(new Runnable() {

                @Override
                public void run() {
                    MainPanel.getInstance().getSunAnimationButton().setEnabled(isHeliodonVisible);
                }
            });
        }
        Heliodon.getInstance().drawSun();
        SceneManager.getInstance().setShading(Heliodon.getInstance().isNightTime());
    }
    // previous versions do not have the following classes
    if (designSpecs == null) {
        designSpecs = new DesignSpecs();
    } else {
        designSpecs.setDefaultValues();
    }
    if (pvDesignSpecs == null) {
        pvDesignSpecs = new PvDesignSpecs();
    } else {
        pvDesignSpecs.setDefaultValues();
    }
    if (cspDesignSpecs == null) {
        cspDesignSpecs = new CspDesignSpecs();
    } else {
        cspDesignSpecs.setDefaultValues();
    }
    if (pvCustomPrice == null) {
        pvCustomPrice = new PvCustomPrice();
    } else {
        pvCustomPrice.setDefaultValues();
    }
    if (cspCustomPrice == null) {
        cspCustomPrice = new CspCustomPrice();
    } else {
        cspCustomPrice.setDefaultValues();
    }
    if (ground == null) {
        ground = new Ground();
    }
    if (atmosphere == null) {
        atmosphere = new Atmosphere();
    }
    if (unit == null) {
        unit = Unit.InternationalSystemOfUnits;
    }
    // restore the default values
    if (Util.isZero(heatVectorLength)) {
        heatVectorLength = 5000;
    }
    if (Util.isZero(heatFluxGridSize)) {
        heatFluxGridSize = 2;
    }
    if (Util.isZero(solarStep)) {
        solarStep = 2;
    }
    if (Util.isZero(timeStep)) {
        timeStep = 15;
    }
    if (Util.isZero(solarPanelNx)) {
        solarPanelNx = 4;
    }
    if (Util.isZero(solarPanelNy)) {
        solarPanelNy = 4;
    }
    if (Util.isZero(rackNx)) {
        rackNx = 8;
    }
    if (Util.isZero(rackNy)) {
        rackNy = 8;
    }
    if (Util.isZero(mirrorNx)) {
        mirrorNx = 4;
    }
    if (Util.isZero(mirrorNy)) {
        mirrorNy = 4;
    }
    if (Util.isZero(parabolicDishN)) {
        parabolicDishN = 4;
    }
    if (Util.isZero(rackCellSize)) {
        rackCellSize = 1;
    }
    if (Util.isZero(solarContrast)) {
        solarContrast = 50;
    }
    // in case we need to have more instruction sheets
    if (instructionSheetText != null) {
        if (instructionSheetText.length < INSTRUCTION_SHEET_NUMBER) {
            final String[] tmp = new String[INSTRUCTION_SHEET_NUMBER];
            System.arraycopy(instructionSheetText, 0, tmp, 0, instructionSheetText.length);
            instructionSheetText = tmp;
        }
    }
    if (instructionSheetTextType != null) {
        if (instructionSheetTextType.length < INSTRUCTION_SHEET_NUMBER) {
            final String[] tmp = new String[INSTRUCTION_SHEET_NUMBER];
            System.arraycopy(instructionSheetTextType, 0, tmp, 0, instructionSheetTextType.length);
            instructionSheetTextType = tmp;
        }
    }
    setEdited(false);
    setCopyBuffer(null);
    Util.setSilently(energyPanel.getColorMapSlider(), solarContrast);
    // need to do this to avoid logging
    Util.setSilently(MainPanel.getInstance().getNoteTextArea(), note == null ? "" : note);
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            energyPanel.updateThermostat();
            // necessary for the scroll bars to show up appropriately
            MainPanel.getInstance().setNoteVisible(MainPanel.getInstance().isNoteVisible());
            // moved from OpenNow to here to avoid triggering EnergyComputer -> RedrawAllNow before open is completed
            MainPanel.getInstance().getEnergyButton().setSelected(false);
            SceneManager.getInstance().getUndoManager().discardAllEdits();
            MainApplication.getEventLog().clear();
        }
    });
}
Also used : Human(org.concord.energy3d.model.Human) PvCustomPrice(org.concord.energy3d.simulation.PvCustomPrice) Ground(org.concord.energy3d.simulation.Ground) Date(java.util.Date) ReadOnlyColorRGBA(com.ardor3d.math.type.ReadOnlyColorRGBA) ColorRGBA(com.ardor3d.math.ColorRGBA) EnergyPanel(org.concord.energy3d.gui.EnergyPanel) LocationData(org.concord.energy3d.simulation.LocationData) DesignSpecs(org.concord.energy3d.simulation.DesignSpecs) CspDesignSpecs(org.concord.energy3d.simulation.CspDesignSpecs) PvDesignSpecs(org.concord.energy3d.simulation.PvDesignSpecs) CspDesignSpecs(org.concord.energy3d.simulation.CspDesignSpecs) Atmosphere(org.concord.energy3d.simulation.Atmosphere) PvDesignSpecs(org.concord.energy3d.simulation.PvDesignSpecs) Tree(org.concord.energy3d.model.Tree) CspCustomPrice(org.concord.energy3d.simulation.CspCustomPrice) HousePart(org.concord.energy3d.model.HousePart)

Example 2 with DesignSpecs

use of org.concord.energy3d.simulation.DesignSpecs in project energy3d by concord-consortium.

the class BuildingInfoPanel method updateWallNumberBounds.

public void updateWallNumberBounds() {
    final DesignSpecs specs = Scene.getInstance().getDesignSpecs();
    String t = "Number of walls";
    if (specs.isNumberOfWallsEnabled()) {
        t += " (" + specs.getMinimumNumberOfWalls() + " - " + specs.getMaximumNumberOfWalls() + ")";
    }
    wallCountBar.setMinimum(specs.getMinimumNumberOfWalls());
    wallCountBar.setMaximum(specs.getMaximumNumberOfWalls());
    wallCountPanel.setBorder(EnergyPanel.createTitledBorder(t, true));
    wallCountBar.setEnabled(specs.isNumberOfWallsEnabled());
    wallCountBar.repaint();
}
Also used : DesignSpecs(org.concord.energy3d.simulation.DesignSpecs)

Example 3 with DesignSpecs

use of org.concord.energy3d.simulation.DesignSpecs in project energy3d by concord-consortium.

the class BuildingInfoPanel method updateHeightBounds.

public void updateHeightBounds() {
    final DesignSpecs specs = Scene.getInstance().getDesignSpecs();
    final double r = 3.28084;
    String t = "Height (";
    switch(Scene.getInstance().getUnit()) {
        case InternationalSystemOfUnits:
            if (specs.isHeightEnabled()) {
                t += twoDecimals.format(specs.getMinimumHeight()) + " - " + twoDecimals.format(specs.getMaximumHeight()) + " ";
            }
            t += "m)";
            heightBar.setMinimum(specs.getMinimumHeight());
            heightBar.setMaximum(specs.getMaximumHeight());
            break;
        case USCustomaryUnits:
            if (specs.isHeightEnabled()) {
                t += noDecimals.format(specs.getMinimumHeight() * r) + " - " + noDecimals.format(specs.getMaximumHeight() * r) + " ";
            }
            t += "ft)";
            heightBar.setMinimum(specs.getMinimumHeight() * r);
            heightBar.setMaximum(specs.getMaximumHeight() * r);
            break;
    }
    heightPanel.setBorder(EnergyPanel.createTitledBorder(t, true));
    heightBar.setEnabled(specs.isHeightEnabled());
    heightBar.repaint();
}
Also used : DesignSpecs(org.concord.energy3d.simulation.DesignSpecs)

Example 4 with DesignSpecs

use of org.concord.energy3d.simulation.DesignSpecs in project energy3d by concord-consortium.

the class BuildingInfoPanel method updateSolarPanelNumberBounds.

public void updateSolarPanelNumberBounds() {
    final DesignSpecs specs = Scene.getInstance().getDesignSpecs();
    String t = "Number of solar panels";
    if (specs.isNumberOfSolarPanelsEnabled()) {
        t += " (" + specs.getMinimumNumberOfSolarPanels() + " - " + specs.getMaximumNumberOfSolarPanels() + ")";
    }
    solarPanelCountBar.setMinimum(specs.getMinimumNumberOfSolarPanels());
    solarPanelCountBar.setMaximum(specs.getMaximumNumberOfSolarPanels());
    solarPanelCountPanel.setBorder(EnergyPanel.createTitledBorder(t, true));
    solarPanelCountBar.setEnabled(specs.isNumberOfSolarPanelsEnabled());
    solarPanelCountBar.repaint();
}
Also used : DesignSpecs(org.concord.energy3d.simulation.DesignSpecs)

Example 5 with DesignSpecs

use of org.concord.energy3d.simulation.DesignSpecs in project energy3d by concord-consortium.

the class BuildingInfoPanel method updateWindowToFloorRatioBounds.

public void updateWindowToFloorRatioBounds() {
    final DesignSpecs specs = Scene.getInstance().getDesignSpecs();
    String t = "Window/floor area ratio";
    if (specs.isWindowToFloorRatioEnabled()) {
        t += " (" + twoDecimals.format(specs.getMinimumWindowToFloorRatio()) + " - " + twoDecimals.format(specs.getMaximumWindowToFloorRatio()) + ")";
    }
    windowToFloorBar.setMinimum(specs.getMinimumWindowToFloorRatio());
    windowToFloorBar.setMaximum(specs.getMaximumWindowToFloorRatio());
    windowToFloorPanel.setBorder(EnergyPanel.createTitledBorder(t, true));
    windowToFloorBar.setEnabled(specs.isWindowToFloorRatioEnabled());
    windowToFloorBar.repaint();
}
Also used : DesignSpecs(org.concord.energy3d.simulation.DesignSpecs)

Aggregations

DesignSpecs (org.concord.energy3d.simulation.DesignSpecs)8 ColorRGBA (com.ardor3d.math.ColorRGBA)1 ReadOnlyColorRGBA (com.ardor3d.math.type.ReadOnlyColorRGBA)1 Date (java.util.Date)1 EnergyPanel (org.concord.energy3d.gui.EnergyPanel)1 HousePart (org.concord.energy3d.model.HousePart)1 Human (org.concord.energy3d.model.Human)1 Tree (org.concord.energy3d.model.Tree)1 Atmosphere (org.concord.energy3d.simulation.Atmosphere)1 CspCustomPrice (org.concord.energy3d.simulation.CspCustomPrice)1 CspDesignSpecs (org.concord.energy3d.simulation.CspDesignSpecs)1 Ground (org.concord.energy3d.simulation.Ground)1 LocationData (org.concord.energy3d.simulation.LocationData)1 PvCustomPrice (org.concord.energy3d.simulation.PvCustomPrice)1 PvDesignSpecs (org.concord.energy3d.simulation.PvDesignSpecs)1