-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcesm_v0.1.0.yaml
More file actions
881 lines (828 loc) · 28.5 KB
/
cesm_v0.1.0.yaml
File metadata and controls
881 lines (828 loc) · 28.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
id: file:///cesm_v0.1.0.yaml
name: cesm
description: Common Energy System Model schema
license: https://creativecommons.org/publicdomain/zero/1.0/
version: v0.1.0
default_prefix: cesm
prefixes:
cesm: file:///cesm_v0.1.0.yaml
linkml: https://w3id.org/linkml/
qudt: http://qudt.org/schema/qudt/ # Core QUDT schema (classes like QuantityValue, Unit)
unit: http://qudt.org/vocab/unit/ # Individual units (MegaW-HR, Meter, etc.)
# qkind: http://qudt.org/vocab/quantitykind/ # Quantity kinds (Energy, Length, Mass, etc.)
imports:
- linkml:types
default_range: float
types:
Duration:
uri: xsd:duration
base: str
repr: str
description: >-
An ISO 8601 duration string (e.g. "PT5M30S" for 5 minutes 30 seconds).
When loaded into Dataframes, this should be converted to pa.duration("us") or similar.
pattern: "^-?P(\\d+Y)?(\\d+M)?(\\d+D)?(T(\\d+H)?(\\d+M)?(\\d+S)?)?$"
classes:
Any:
class_uri: linkml:Any
Entity:
abstract: true
description: "Abstract top-level class that contains all other classes (except Dataset)."
attributes:
name:
range: string
identifier: true
required: true
description: "User-facing unique name identifier."
multivalued: false
semantic_id:
range: uriorcurie
description: "Optional id for semantic web integration."
alternative_names:
range: string
multivalued: true
description: "List of alternative names and aliases."
description:
range: string
description: "Description of the entity."
Node:
is_a: Entity
abstract: true
description: "Abstract class that contains all types of nodes"
attributes:
node_type:
# designates_type: true
range: NodeType
description: "Limits allowed types: Balance, Storage, Commodity"
latitude:
range: float
description: "Geographic latitude of the node in decimal degrees (WGS 84)."
minimum_value: -90
maximum_value: 90
annotations:
qudt.ucum_code: "[deg]"
qudt.unit: "unit:DEG"
longitude:
range: float
description: "Geographic longitude of the node in decimal degrees (WGS 84)."
minimum_value: -180
maximum_value: 180
annotations:
qudt.ucum_code: "[deg]"
qudt.unit: "unit:DEG"
Balance:
is_a: Node
description: "Nodes that maintain a balance between inputs and outputs in each time step, but do not have a storage."
mixins:
- HasFlow
- HasPenalty
Storage:
is_a: Node
description: "Nodes that include a state variable to represent storage. Also maintains balance between inputs and outputs including charging and discharging of the state."
mixins:
- HasFlow
- HasPenalty
- HasInvestments
slots:
- availability
attributes:
storage_capacity:
range: float
description: "Capacity of a single storage asset."
annotations:
qudt.ucum_code: "[MW.h]"
qudt.unit: "unit:MegaW-HR"
storages_existing:
any_of:
- range: float
- range: PeriodFloat
description: "Number of pre-existing storage assets at the model start."
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
investment_cost:
is_a: currency_per_kilowatt-hour
range: Any
description: "Overnight cost (in dataset currency using reference_year denomination) per kWh."
fixed_cost:
is_a: currency_per_kilowatt-hour_per_year
range: Any
description: "Cost of maintaining the asset (in dataset currency using reference_year denomination) per kWh per year."
storage_loss_from_stored_energy:
range: float
description: "Loss of stored energy over one hour as a fraction of the energy stored."
annotations:
qudt.ucum_code: "[10*-2]"
qudt.unit: "unit:PERCENT"
Commodity:
is_a: Node
description: "Nodes where the model can buy and sell commodities against an exogenous price."
attributes:
commodity_type:
range: CommodityType
required: true
description: "Type of a commodity"
price_per_unit:
is_a: currency_per_megawatt-hour
any_of:
- range: float
- range: PeriodFloat
description: "Price (in dataset currency using reference_year denomination) per unit of the product being bought or sold."
Unit:
is_a: Entity
description: "Units convert input(s) to output(s) using a ratio multiplier."
mixins:
- HasInvestments
slots:
- conversion_rates
- availability
attributes:
latitude:
range: float
description: "Geographic latitude of the unit in decimal degrees (WGS 84)."
minimum_value: -90
maximum_value: 90
annotations:
qudt.ucum_code: "[deg]"
qudt.unit: "unit:DEG"
longitude:
range: float
description: "Geographic longitude of the unit in decimal degrees (WGS 84)."
minimum_value: -180
maximum_value: 180
annotations:
qudt.ucum_code: "[deg]"
qudt.unit: "unit:DEG"
conversion_method:
range: ConversionMethod
description: "Choose how the unit converts inputs to outputs."
startup_method:
range: StartupMethod
description: Choose how the unit startups are treated in the model.
units_existing:
any_of:
- range: float
- range: PeriodFloat
description: "Number of pre-existing conversion units at the model start."
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
startup_cost:
is_a: currency_per_unit
range: float
description: Cost of one full startup for one unit.
Port:
is_a: Entity
description: "Ports designates an input or an output between a unit and a node."
abstract: true
mixins:
- HasProfiles
slots:
- availability
attributes:
source:
range: Entity # Will be overridden in the sub-class
required: true
description: "Name of the source entity (Unit or Node)."
annotations:
is_dimension: true
sink:
range: Entity # Will be overridden in the sub-class
required: true
description: "Name of the sink entity (Unit or Node)."
annotations:
is_dimension: true
capacity:
range: float
description: "Capacity of the port for a single unit."
annotations:
qudt.ucum_code: "[MW]"
qudt.unit: "unit:MegaW"
investment_cost:
is_a: currency_per_kilowatt
any_of:
- range: float
- range: PeriodFloat
description: "Overnight (in dataset currency using reference_year denomination) per kW."
fixed_cost:
is_a: currency_per_kilowatt_per_year
any_of:
- range: float
- range: PeriodFloat
description: "Cost of maintaining the asset (in dataset currency using reference_year denomination) per kW per year."
other_operational_cost:
is_a: currency_per_megawatt-hour
any_of:
- range: float
- range: PeriodFloat
description: "Cost (in dataset currency using reference_year denomination) per unit of the product flowing through, usually energy in MWh."
constraint_flow_coefficient:
range: ConstraintFloat
description: Multiplier between constraints and the flow. Map of constraints and respective coefficients.
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
inertia_constant:
range: float
description: Inertia constant for a synchronously connected unit to this node.
annotations:
qudt.ucum_code: "[MWs/MW]"
qudt.hasFactorUnit: |
- hasUnit: unit:MegaW-s, exponent: 1
- hasUnit: unit:MegaW, exponent: -1
# unique_keys:
# source_sink:
# unique_key_slots:
# - source
# - sink
Unit_to_node:
is_a: Port
description: "An output port from a unit to a node."
slot_usage:
source:
range: Unit
description: "Source unit of the unit_to_node port."
sink:
range: Node
description: "Sink node of the unit_to_node port."
Node_to_unit:
is_a: Port
description: "An input port from a node to a unit."
slot_usage:
source:
range: Node
description: "Source node of the node_to_unit port."
sink:
range: Unit
description: "Sink unit of the node_to_unit port."
Link:
is_a: Entity
description: "Connects two nodes."
mixins:
- HasInvestments
slots:
- conversion_rates
- availability
slot_usage:
efficiency:
any_of:
- range: float
- range: float
multivalued: true
- range: DirectionalValue
attributes:
node_A:
range: Node
required: true
description: "First node of a bidirectional link"
annotations:
is_dimension: true
node_B:
range: Node
required: true
description: "Second node of a bidirectional link"
annotations:
is_dimension: true
transfer_method:
range: TransferMethod
description: "How to transfer between the two links."
capacity:
range: float
description: "Capacity of a single asset (flow or link)."
annotations:
qudt.ucum_code: "[MW]"
qudt.unit: "unit:MegaW"
links_existing:
any_of:
- range: float
- range: PeriodFloat
description: "Number of pre-existing links at the model start"
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
investment_cost:
is_a: currency_per_kilowatt
range: Any
description: "Price (in dataset currency using reference_year denomination) per kW."
fixed_cost:
is_a: currency_per_kilowatt_per_year
range: Any
description: "Cost of maintaining the asset (in dataset currency using reference_year denomination) per kW per year."
operational_cost:
is_a: currency_per_megawatt-hour
range: Any
description: "Cost (in dataset currency using reference_year denomination) per unit of the product flowing through, usually energy in MWh."
Period:
is_a: Entity
description: "The properties of the periods available for the model."
attributes:
years_represented:
range: float
description: "How many years the period represents before the next period in the solve. Used for discounting. Can be below one (multiple periods in one year)."
Group:
is_a: Entity
description: "Groups define constraints on multiple entities at once"
attributes:
group_type:
range: GroupType
required: true
description: "Choice of group type"
invest_max_total:
range: float
description: "Maximum investment to the aggregated capacity of set member flows (unit__to_node, node__to_unit, link) and storage capacity. Applies as a sum over all periods. Constant."
annotations:
qudt.ucum_code: "[MW]"
qudt.unit: "unit:MegaW"
Group_entity:
is_a: Entity
description: "Makes an entity to be a member of a group"
attributes:
group:
range: Group
required: true
description: "Group name that the entity belongs to"
annotations:
is_dimension: true
entity:
range: Entity
required: true
description: "Entity name"
annotations:
is_dimension: true
Constraint:
is_a: Entity
description: "Constraints define constraints on multiple variables at once"
attributes:
constant:
range: float
multivalued: true
description: "Right hand side of the constraint."
sense:
range: Equality
description: "Is the sense of the constraint equal to, greater than or less than."
Solve_pattern:
is_a: Entity
description: "Defines the properties of each solve pattern."
attributes:
solve_mode:
range: SolveMode
description: "Choice of solve process handled within the model."
periods_realise_operations:
any_of:
range: Period
multivalued: true
list_elements_ordered: true
description: "A list of periods from which the model will report investment results and possibly pass to the next solve."
periods_realise_investments:
range: Period
multivalued: true
list_elements_ordered: true
description: "A list of periods from which the model will report investment results and possibly pass to the next solve."
periods_pass_storage_data:
range: Period
multivalued: true
list_elements_ordered: true
description: "A list of periods from which the model will pass storage level information to the next solve or to the child solves."
periods_additional_operations_horizon:
range: Period
multivalued: true
list_elements_ordered: true
description: "A list of periods that will be included in dispatch optimisation but are not part of results reporting (they may be solved again in a later solve)."
periods_additional_investments_horizon:
range: Period
multivalued: true
list_elements_ordered: true
description: "A list of periods that will be included in invest optimisation but are not part of results reporting (they may be solved again in a later solve)."
start_time_durations:
range: Timeset
multivalued: true
list_elements_ordered: true
description: "Contains pairs of start time and duration to define what part of the timeline is to be solved. Start times need to match a value in the timeline. Defaults to the start of the timeline and full timeline duration. Can be a list of timesets to define representative periods."
rolling_jump:
range: Duration
description: "How much each roll jumps forward in time."
rolling_additional_horizon:
range: Duration
description: "How much rolling solves have additional horizon beyond the rolling_jump duration."
time_resolution:
range: Duration
description: "Time resolution the model should use. Has to be integer multiples of the time resolution of the original data."
comments:
- "Variable time resolution to be added later."
contains_solve_pattern:
range: Solve_pattern
description: "A child solve_pattern to be executed inside of the parent solve_pattern."
System:
is_a: Entity
description: "Parameters related to the whole system to be modelled."
attributes:
solve_order:
range: Solve_pattern
multivalued: true
list_elements_ordered: true
inflation_rate:
description: "Rate of inflation for the currency_year of the dataset."
any_of:
- range: float
- range: PeriodFloat
annotations:
qudt.ucum_code: "[10*-2]"
qudt.unit: "unit:PERCENT"
HasFlow:
mixin: true
description: "Mixin for flow (annual_flow, flow_profile) related properties."
attributes:
flow_annual:
range: float
annotations:
qudt.ucum_code: "[MW.h]"
qudt.unit: "unit:MegaW-HR"
description: "Annual flow that can be used to scale the flow profile. Always positive - flow_profile defines the direction."
flow_profile:
range: Any
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
description: "Flow profile that can be scaled by flow_annual. Positive values are inflow and negative values outflow from the node."
flow_scaling_method:
range: FlowScalingMethod
description: How to use flow_profile and flow_annual. Options are use_profile_directly, scale_to_annual.
HasPenalty:
mixin: true
description: "Mixin for penalty related attributes (penalty_upward, penalty_downward)."
attributes:
penalty_upward:
any_of:
- range: float
- range: PeriodFloat
description: "Creates the commodity out of nothing using a slack variable that causes a penalty of currency_year per unit of created stuff."
penalty_downward:
any_of:
- range: float
- range: PeriodFloat
description: "Destroys the commodity into nothingness using a slack variable that causes a penalty of currency_year per unit of destroyed stuff."
HasInvestments:
mixin: true
description: "Mixin for investment related attributes."
attributes:
investment_method:
range: InvestmentMethod
description: Choice of investment method.
discount_rate:
any_of:
- range: float
- range: PeriodFloat
description: Discount rate of the investment.
annotations:
qudt.ucum_code: "[10*-2]"
qudt.unit: "unit:PERCENT"
payback_time:
any_of:
- range: float
- range: PeriodFloat
description: Economic payback time of the investment. Used to annualize investments.
annotations:
qudt.ucum_code: "[a]"
qudt.unit: "unit:YR"
HasProfiles:
mixin: true
description: "Mixin for profile related attributes."
attributes:
profile_limit_upper:
range: float
multivalued: true
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
profile_limit_lower:
range: float
multivalued: true
annotations:
qudt.ucum_code: "[1]"
qudt.unit: "unit:UNITLESS"
DirectionalValue:
attributes:
forward:
range: float
multivalued: true
description: The parameter is applied to the forward direction (Node_A --> Node_B).
reverse:
range: float
multivalued: true
description: The parameter is applied to the backward direction (Node_B --> Node_A).
description: To which direction the parameter value is applied for in a link.
PeriodFloat:
attributes:
period:
range: Period
multivalued: true
value:
range: float
multivalued: true
ConstraintFloat:
attributes:
constraint:
range: Constraint
multivalued: true
value:
range: float
multivalued: true
ConversionRatesFloatFloat:
attributes:
operating_point:
range: float
conversion_rate:
range: float
Timeset:
attributes:
start_time:
range: datetime
duration:
range: Duration
Dataset:
tree_root: true
description: "Dataset properties and holder for classes available in the schema."
attributes:
id:
identifier: true
range: integer
description: "Dataset level id to distuingish between dataset versions."
timeline:
range: datetime
multivalued: true
list_elements_ordered: true
description: "Time steps for which data can be entered in the dataset. Used to validate input data."
# entity:
# range: Entity
# multivalued: true
# inlined_as_list: true
# required: false
balance:
range: Balance
multivalued: true
inlined_as_list: true
required: false
storage:
range: Storage
multivalued: true
inlined_as_list: true
required: false
commodity:
range: Commodity
multivalued: true
inlined_as_list: true
required: false
unit:
range: Unit
multivalued: true
inlined_as_list: true
required: false
node_to_unit:
range: Node_to_unit
multivalued: true
inlined_as_list: true
required: false
unit_to_node:
range: Unit_to_node
multivalued: true
inlined_as_list: true
required: false
link:
range: Link
multivalued: true
inlined_as_list: true
required: false
group:
range: Group
multivalued: true
inlined_as_list: true
required: false
constraint:
range: Constraint
multivalued: true
inlined_as_list: true
required: false
group_entity:
range: Group_entity
multivalued: true
inlined_as_list: true
required: false
solve_pattern:
range: Solve_pattern
multivalued: true
inlined_as_list: true
required: false
period:
range: Period
multivalued: true
inlined_as_list: true
required: false
system:
range: System
multivalued: true
inlined_as_list: true
required: false
slots:
- currency
- reference_year
- entity
slots:
entity:
range: Entity
multivalued: true
description: "All entities in this dataset"
currency:
range: string
pattern: "^[A-Z]{3}$" # e.g., "USD"
description: "QUDT currency for all monetary values in the dataset"
multivalued: false
required: true
annotations:
qudt.ucum_code: "[currency]"
qudt.unit: unit:CCY
comments:
- "Currency codes must exist in http://qudt.org/vocab/currency/"
- "Validation requires external QUDT vocabulary check"
reference_year:
pattern: "^\\d{4}$"
description: "QUDT year for all monetary values in the dataset - real (as opposed to nominal) value for this year"
multivalued: false
required: true
annotations:
qudt.ucum_code: "[a]"
qudt.unit: unit:YR
currency_per_megawatt:
range : Any
description: "Monetary value per megawatt of power capacity. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.MW-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:MegaW, exponent: -1
meaning: cesm:CCY-PER-MegaW
currency_per_kilowatt:
range: Any
description: "Monetary value per kilowatt of power capacity. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.kW-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:KiloW, exponent: -1
meaning: cesm:CCY-PER-KiloW
currency_per_kilowatt_per_year:
range: Any
description: "Monetary value per kilowatt of energy capacity per year. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.kW-1.a-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:KiloW, exponent: -1
- hasUnit: unit:YR, exponent: -1
meaning: cesm:CCY-PER-KiloW-YR
currency_per_megawatt-hour:
range: Any
description: "Monetary value per megawatt-hour of energy capacity. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.MW-1.h-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:MegaW-HR, exponent: -1
meaning: cesm:CCY-PER-MegaW-HR
currency_per_kilowatt-hour:
range: Any
description: "Monetary value per kilowatt-hour of energy capacity. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.kW-1.h-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:KiloW-HR, exponent: -1
meaning: cesm:CCY-PER-KiloW-HR
currency_per_kilowatt-hour_per_year:
range: Any
description: "Monetary value per kilowatt-hour of energy capacity per year. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency.kW-1.h-1.a-1]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
- hasUnit: unit:KiloW-HR, exponent: -1
- hasUnit: unit:YR, exponent: -1
meaning: cesm:CCY-PER-KiloW-HR-YR
currency_per_unit:
range: Any
description: "Monetary value per one full unit. Monetary value is to be given in the dataset currency in real terms for the reference_year of the dataset."
annotations:
qudt.ucum_code: "[currency]"
qudt.hasFactorUnit: |
- hasUnit: unit:CCY, exponent: 1
meaning: cesm:CCY-PER-Unit
conversion_rates:
any_of:
- range: float
- range: ConversionRatesFloatFloat
multivalued: true
description: "Multiplier(s) for turning inputs to outputs or for transferring between nodes. Can be given as single float (constant efficiency) or as a list of tuples where first value is for operating point and second value is for efficiency. The list must have decreasing values for the operating points - starting from 100%."
annotations:
qudt.ucum_code: "[10*-2]"
qudt.unit: "unit:PERCENT"
# minimum_operating_point:
# range: float
# description: "Minimum stable operation level for a unit."
# annotations:
# qudt.ucum_code: "[10*-2]"
# qued_unit: "unit:PERCENT"
# comments: |
# Perhaps it would be best to just have 'efficiency' that holds all efficiencies and operating points
#
# efficiency_at_minimum_operating_point:
# range: float
# description: "Efficiency at the minimum stable operation level for a unit."
# annotations:
# qudt.ucum_code: "[10*-2]"
# qued_unit: "unit:PERCENT"
# comments: |
# Perhaps it would be best to just have 'efficiency' that holds all efficiencies and operating points
availability:
any_of:
- range: float
- range: float
multivalued: true
description: "Time series for availability (to represent forced outages)."
annotations:
qudt.ucum_code: "[10*-2]"
qudt.unit: "unit:PERCENT"
enums:
FlowScalingMethod:
permissible_values:
use_profile_directly:
text: use_profile_directly
scale_to_annual:
text: scale_to_annual
description: How to use flow_profile and flow_annual.
ConversionMethod:
permissible_values:
constant_efficiency:
text: constant_efficiency
two_point_efficiency:
text: two_point_efficiency
description: "Choose how the unit converts inputs to outputs"
StartupMethod:
permissible_values:
linear:
text: linear
description: Online variable is continuous
integer:
text: integer
description: Online variable is discrete
description: "Choose how the unit startup methods are treated"
TransferMethod:
permissible_values:
regular_linear:
text: regular_linear
description: "How to transfer between the two links."
SolveMode:
permissible_values:
single_solve:
text: single_solve
rolling_solve:
text: rolling_solve
description: "Choice of solve process handled within the model."
InvestmentMethod:
permissible_values:
not_allowed:
text: not_allowed
no_limits:
text: no_limits
description: Choice of investment method.
NodeType:
permissible_values:
Balance:
meaning: cesm:Balance
Storage:
meaning: cesm:Storage
Commodity:
meaning: cesm:Commodity
description: "Limits allowed node types: Balance, Storage, Commodity"
CommodityType:
permissible_values:
fuel:
text: fuel
emission:
text: emission
description: "Limits allowed commodity types"
GroupType:
permissible_values:
node:
description: Defines a group of nodes that have shared constraints.
power_grid:
description: Defines a group of balance nodes that form a synchronous power grid (these nodes can also have shared constraints).
link:
description: Defines a group of links that have shared constraints.
description: "Limits allowed group types"
Equality:
permissible_values:
equal:
description: Left hand side must equal right hand side
greater_than:
description: Left hand side must be greater than right hand side
less_than:
description: Left hand side must be less than right hand side