/*******************************************************************************
* Copyright 2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package emlab.domain.technology;
import java.util.HashSet;
import java.util.Set;
import org.neo4j.graphdb.Direction;
import org.springframework.data.neo4j.annotation.NodeEntity;
import org.springframework.data.neo4j.annotation.RelatedTo;
import agentspring.simulation.SimulationParameter;
@NodeEntity
public class PowerGeneratingTechnology {
private String name;
@SimulationParameter(label = "Capacity (MW)", from = 0, to = 2000)
private double capacity;
@SimulationParameter(label = "Efficiency", from = 0, to = 1)
private double efficiency;
@SimulationParameter(label = "Efficiency modifier (exogenous)", from = -1, to = 1)
private double efficiencyModifierExogenous;
@SimulationParameter(label = "CO2 capture efficiency", from = 0, to = 1)
private double co2CaptureEffciency;
@SimulationParameter(label = "Total investment cost (EUR)", from = 0, to = 1000000000)
private double baseInvestmentCost;
private double investmentCostModifierExogenous;
@SimulationParameter(label = "Down payment (30% of investment)", from = 0, to = 1000000000)
private double downPayment;
@SimulationParameter(label = "Depreciation time (years)", from = 0, to = 40)
private int depreciationTime;
@SimulationParameter(label = "Minimum running hours (hours/year)", from = 0, to = 8760)
private double minimumRunningHours;
@SimulationParameter(label = "Fixed operating cost (euro/MW)", from = 0, to = 100000)
private double fixedOperatingCost;
private double fixedOperatingCostModifierAfterLifetime;
@SimulationParameter(label = "Expected lifetime", from = 0, to = 40)
private int expectedLifetime;
@SimulationParameter(label = "Expected leadtime", from = 0, to = 10)
private int expectedLeadtime;
private int expectedPermittime;
private double minimumFuelQuality;
@SimulationParameter(label = "Maximum installed capacity fraction in country", from = 0, to = 1)
private double maximumInstalledCapacityFractionInCountry;
@SimulationParameter(label = "Maximum installed capacity fraction per producer", from = 0, to = 1)
private double maximumInstalledCapacityFractionPerAgent;
private double baseSegmentDependentAvailability;
private double peakSegmentDependentAvailability;
private boolean applicableForLongTermContract;
private boolean intermittent;
public double getBaseSegmentDependentAvailability() {
return baseSegmentDependentAvailability;
}
public void setBaseSegmentDependentAvailability(double baseSegmentDependentAvailability) {
this.baseSegmentDependentAvailability = baseSegmentDependentAvailability;
}
public double getPeakSegmentDependentAvailability() {
return peakSegmentDependentAvailability;
}
public void setPeakSegmentDependentAvailability(double peakSegmentDependentAvailability) {
this.peakSegmentDependentAvailability = peakSegmentDependentAvailability;
}
public double getMaximumInstalledCapacityFractionInCountry() {
return maximumInstalledCapacityFractionInCountry;
}
public void setMaximumInstalledCapacityFractionInCountry(double maximumInstalledCapacityFractionInCountry) {
this.maximumInstalledCapacityFractionInCountry = maximumInstalledCapacityFractionInCountry;
}
public double getMaximumInstalledCapacityFractionPerAgent() {
return maximumInstalledCapacityFractionPerAgent;
}
public void setMaximumInstalledCapacityFractionPerAgent(double maximumInstalledCapacityFractionPerAgent) {
this.maximumInstalledCapacityFractionPerAgent = maximumInstalledCapacityFractionPerAgent;
}
public double getDownPayment() {
return downPayment;
}
public void setDownPayment(double downPayment) {
this.downPayment = downPayment;
}
public int getDepreciationTime() {
return depreciationTime;
}
public void setDepreciationTime(int depreciationTime) {
this.depreciationTime = depreciationTime;
}
public double getMinimumRunningHours() {
return minimumRunningHours;
}
public void setMinimumRunningHours(double minimumRunningHours) {
this.minimumRunningHours = minimumRunningHours;
}
@RelatedTo(type = "FUEL", elementClass = Substance.class, direction = Direction.OUTGOING)
private Set<Substance> fuels;
public String getName() {
return name;
}
public void setName(String label) {
this.name = label;
}
/*
* assumption: the first is the main fuel
*/
public Substance getMainFuel() {
if (getFuels().size() > 0) {
return getFuels().iterator().next();
} else {
return null;
}
}
public Set<Substance> getCoCombustionFuels() {
Set<Substance> coFuels = new HashSet<Substance>(getFuels());
coFuels.remove(getMainFuel());
return coFuels;
}
public double getCapacity() {
return capacity;
}
public void setCapacity(double capacity) {
this.capacity = capacity;
}
public double getEfficiency() {
return efficiency;
}
public void setEfficiency(double efficiency) {
this.efficiency = efficiency;
}
public double getEfficiencyModifierExogenous() {
return efficiencyModifierExogenous;
}
public void setEfficiencyModifierExogenous(double efficiencyModifierExogenous) {
this.efficiencyModifierExogenous = efficiencyModifierExogenous;
}
public double getCo2CaptureEffciency() {
return co2CaptureEffciency;
}
public void setCo2CaptureEffciency(double co2CaptureEffciency) {
this.co2CaptureEffciency = co2CaptureEffciency;
}
public double getInvestmentCostModifierExogenous() {
return investmentCostModifierExogenous;
}
public void setInvestmentCostModifierExogenous(double investmentCostModifierExogenous) {
this.investmentCostModifierExogenous = investmentCostModifierExogenous;
}
public double getFixedOperatingCost() {
return fixedOperatingCost;
}
public void setFixedOperatingCost(double fixedOperatingCost) {
this.fixedOperatingCost = fixedOperatingCost;
}
public double getFixedOperatingCostModifierAfterLifetime() {
return fixedOperatingCostModifierAfterLifetime;
}
public void setFixedOperatingCostModifierAfterLifetime(double fixedOperatingCostModifierAfterLifetime) {
this.fixedOperatingCostModifierAfterLifetime = fixedOperatingCostModifierAfterLifetime;
}
public int getExpectedLifetime() {
return expectedLifetime;
}
public void setExpectedLifetime(int expectedLifetime) {
this.expectedLifetime = expectedLifetime;
}
public int getExpectedLeadtime() {
return expectedLeadtime;
}
public void setExpectedLeadtime(int expectedLeadtime) {
this.expectedLeadtime = expectedLeadtime;
}
public int getExpectedPermittime() {
return expectedPermittime;
}
public void setExpectedPermittime(int expectedPermittime) {
this.expectedPermittime = expectedPermittime;
}
public double getMinimumFuelQuality() {
return minimumFuelQuality;
}
public void setMinimumFuelQuality(double minimumFuelQuality) {
this.minimumFuelQuality = minimumFuelQuality;
}
public Set<Substance> getFuels() {
return fuels;
}
public void setFuels(Set<Substance> fuels) {
this.fuels = fuels;
}
public String toString() {
return this.getName();
}
public boolean isApplicableForLongTermContract() {
return applicableForLongTermContract;
}
public void setApplicableForLongTermContract(boolean applicableForLongTermContract) {
this.applicableForLongTermContract = applicableForLongTermContract;
}
public double getBaseInvestmentCost() {
return baseInvestmentCost;
}
public void setBaseInvestmentCost(double baseInvestmentCost) {
this.baseInvestmentCost = baseInvestmentCost;
}
public boolean isIntermittent() {
return intermittent;
}
public void setIntermittent(boolean intermittent) {
this.intermittent = intermittent;
}
}