16 package emlab.gen.domain.technology;
18 import java.util.HashSet;
21 import org.neo4j.graphdb.Direction;
22 import org.springframework.data.neo4j.annotation.NodeEntity;
23 import org.springframework.data.neo4j.annotation.RelatedTo;
25 import agentspring.simulation.SimulationParameter;
33 @SimulationParameter(label =
"Capacity (MW)", from = 0, to = 2000)
34 private double capacity;
36 @RelatedTo(type =
"PGT_INVESTMENTCOSTS", elementClass =
TimeSeriesImpl.class, direction = Direction.OUTGOING)
39 @RelatedTo(type =
"PGT_OMCOSTS", elementClass =
TimeSeriesImpl.class, direction = Direction.OUTGOING)
42 @RelatedTo(type =
"PGT_EFFICIENCYTS", elementClass =
TimeSeriesImpl.class, direction = Direction.OUTGOING)
45 @SimulationParameter(label =
"CO2 capture efficiency", from = 0, to = 1)
46 private double co2CaptureEffciency;
49 @SimulationParameter(label =
"Depreciation time (years)", from = 0, to = 40)
50 private int depreciationTime;
52 @SimulationParameter(label =
"Minimum running hours (hours/year)", from = 0, to = 8760)
53 private double minimumRunningHours;
55 private double fixedOperatingCostModifierAfterLifetime;
57 @SimulationParameter(label =
"Expected lifetime", from = 0, to = 40)
58 private int expectedLifetime;
60 @SimulationParameter(label =
"Expected leadtime", from = 0, to = 10)
61 private int expectedLeadtime;
63 private int expectedPermittime;
64 private double minimumFuelQuality;
66 @SimulationParameter(label =
"Maximum installed capacity fraction in country", from = 0, to = 1)
67 private double maximumInstalledCapacityFractionInCountry;
69 @SimulationParameter(label =
"Maximum installed capacity fraction per producer", from = 0, to = 1)
70 private double maximumInstalledCapacityFractionPerAgent;
72 private double baseSegmentDependentAvailability;
74 private double peakSegmentDependentAvailability;
76 private boolean applicableForLongTermContract;
78 private boolean intermittent;
80 public double getBaseSegmentDependentAvailability() {
81 return baseSegmentDependentAvailability;
84 public void setBaseSegmentDependentAvailability(
double baseSegmentDependentAvailability) {
85 this.baseSegmentDependentAvailability = baseSegmentDependentAvailability;
88 public double getPeakSegmentDependentAvailability() {
89 return peakSegmentDependentAvailability;
92 public void setPeakSegmentDependentAvailability(
double peakSegmentDependentAvailability) {
93 this.peakSegmentDependentAvailability = peakSegmentDependentAvailability;
96 public double getMaximumInstalledCapacityFractionInCountry() {
97 return maximumInstalledCapacityFractionInCountry;
100 public void setMaximumInstalledCapacityFractionInCountry(
double maximumInstalledCapacityFractionInCountry) {
101 this.maximumInstalledCapacityFractionInCountry = maximumInstalledCapacityFractionInCountry;
104 public double getMaximumInstalledCapacityFractionPerAgent() {
105 return maximumInstalledCapacityFractionPerAgent;
108 public void setMaximumInstalledCapacityFractionPerAgent(
double maximumInstalledCapacityFractionPerAgent) {
109 this.maximumInstalledCapacityFractionPerAgent = maximumInstalledCapacityFractionPerAgent;
112 public int getDepreciationTime() {
113 return depreciationTime;
116 public void setDepreciationTime(
int depreciationTime) {
117 this.depreciationTime = depreciationTime;
120 public double getMinimumRunningHours() {
121 return minimumRunningHours;
124 public void setMinimumRunningHours(
double minimumRunningHours) {
125 this.minimumRunningHours = minimumRunningHours;
128 @RelatedTo(type =
"FUEL", elementClass =
Substance.class, direction = Direction.OUTGOING)
129 private Set<Substance> fuels;
131 public String getName() {
135 public void setName(String label) {
143 if (getFuels().size() > 0) {
144 return getFuels().iterator().next();
150 public Set<Substance> getCoCombustionFuels() {
151 Set<Substance> coFuels =
new HashSet<Substance>(getFuels());
152 coFuels.remove(getMainFuel());
156 public double getCapacity() {
160 public void setCapacity(
double capacity) {
161 this.capacity = capacity;
164 public double getEfficiency(
long time) {
165 return efficiencyTimeSeries.getValue(time);
169 return investmentCostTimeSeries;
172 public void setInvestmentCostTimeSeries(
TimeSeriesImpl investmentCostTrend) {
173 this.investmentCostTimeSeries = investmentCostTrend;
177 return fixedOperatingCostTimeSeries;
180 public void setFixedOperatingCostTimeSeries(
TimeSeriesImpl fixedOperatingCostTrend) {
181 this.fixedOperatingCostTimeSeries = fixedOperatingCostTrend;
185 return efficiencyTimeSeries;
188 public void setEfficiencyTimeSeries(
TimeSeriesImpl efficiencyTrend) {
189 this.efficiencyTimeSeries = efficiencyTrend;
192 public double getCo2CaptureEffciency() {
193 return co2CaptureEffciency;
196 public void setCo2CaptureEffciency(
double co2CaptureEffciency) {
197 this.co2CaptureEffciency = co2CaptureEffciency;
200 public double getFixedOperatingCostModifierAfterLifetime() {
201 return fixedOperatingCostModifierAfterLifetime;
204 public void setFixedOperatingCostModifierAfterLifetime(
double fixedOperatingCostModifierAfterLifetime) {
205 this.fixedOperatingCostModifierAfterLifetime = fixedOperatingCostModifierAfterLifetime;
208 public int getExpectedLifetime() {
209 return expectedLifetime;
212 public void setExpectedLifetime(
int expectedLifetime) {
213 this.expectedLifetime = expectedLifetime;
216 public int getExpectedLeadtime() {
217 return expectedLeadtime;
220 public void setExpectedLeadtime(
int expectedLeadtime) {
221 this.expectedLeadtime = expectedLeadtime;
224 public int getExpectedPermittime() {
225 return expectedPermittime;
228 public void setExpectedPermittime(
int expectedPermittime) {
229 this.expectedPermittime = expectedPermittime;
232 public double getMinimumFuelQuality() {
233 return minimumFuelQuality;
236 public void setMinimumFuelQuality(
double minimumFuelQuality) {
237 this.minimumFuelQuality = minimumFuelQuality;
240 public Set<Substance> getFuels() {
244 public void setFuels(Set<Substance> fuels) {
248 public String toString() {
249 return this.getName();
252 public boolean isApplicableForLongTermContract() {
253 return applicableForLongTermContract;
256 public void setApplicableForLongTermContract(
boolean applicableForLongTermContract) {
257 this.applicableForLongTermContract = applicableForLongTermContract;
260 public double getInvestmentCost(
long time) {
261 return investmentCostTimeSeries.getValue(time);
264 public double getFixedOperatingCost(
long time) {
265 return fixedOperatingCostTimeSeries.getValue(time);
268 public boolean isIntermittent() {
272 public void setIntermittent(
boolean intermittent) {
273 this.intermittent = intermittent;