-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathequcrtp.vda
123 lines (116 loc) · 7.23 KB
/
equcrtp.vda
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
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* Copyright (C) 2000-2024 Energy Technology Systems Analysis Programme (ETSAP)
* This file is part of the IEA-ETSAP TIMES model generator, licensed
* under the GNU General Public License v3.0 (see file NOTICE-GPLv3.txt).
*==============================================================================*
* EQ_UCRTP.MOD : Annual bounds for process dynamic development *
*==============================================================================*
* %1 - jump label
* %2 - eq. declaration type
* %3 - eq. definition type
* %4 - bound type
*-------------------------------------------------------------------------------
$GOTO %1
*-------------------------------------------------------------------------------
$LABEL INIT_EXT
* Move dynamic bounds to dedicated attribute
IF(CARD(UC_DYNBND), OPTION CLEAR=UNCD1; LOOP(UC_DYNBND(UCN,BD),UNCD1(UCN)=YES);
PRC_DYNUC(UC_N,SIDE,R,LL,P,'CAP',BD)$UC_DYNBND(UC_N,BD) $= UC_CAP(UC_N,SIDE,R,LL,P);
PRC_DYNUC(UC_N,SIDE,R,LL,P,'NCAP',BD)$UC_DYNBND(UC_N,BD) $= UC_NCAP(UC_N,SIDE,R,LL,P);
PRC_DYNUC(UC_N,SIDE,R,LL,P,'ACT',BD)$UC_DYNBND(UC_N,BD) $= UC_ACT(UC_N,SIDE,R,LL,P,'ANNUAL');
UC_COM(UC_N(UNCD1),'NET',SIDE,R,LL,C,ANNUAL(S),'UCN') $= UC_COMNET(UC_N,SIDE,R,LL,C,S);
UC_COM(UC_N(UNCD1),'PRD',SIDE,R,LL,C,ANNUAL(S),'UCN') $= UC_COMPRD(UC_N,SIDE,R,LL,C,S);
UC_CAP(UC_N(UNCD1),SIDE,R,LL,P) = 0;
UC_NCAP(UC_N(UNCD1),SIDE,R,LL,P) = 0;
UC_ACT(UC_N(UNCD1),SIDE,R,LL,P,S) = 0;
UC_COMPRD(UC_N(UNCD1),SIDE,R,LL,C,S) = 0;
UC_COMNET(UC_N(UNCD1),SIDE,R,LL,C,S) = 0;
* Set LHS default IE to 5 and RHS default to 10
UC_COM(UCN(UNCD1),COM_VAR,'LHS',R,LL--ORD(LL),C,S,'UCN')$((NOT UC_COM(UCN,COM_VAR,'LHS',R,'0',C,S,'UCN'))$UC_COM(UCN,COM_VAR,'LHS',R,LL,C,S,'UCN'))=5;
UC_COM(UCN(UNCD1),COM_VAR,'RHS',R,LL--ORD(LL),C,S,'UCN')$((NOT UC_COM(UCN,COM_VAR,'RHS',R,'0',C,S,'UCN'))$UC_COM(UCN,COM_VAR,'RHS',R,LL,C,S,'UCN'))=
UC_COM(UCN,COM_VAR,'LHS',R,'0',C,S,'UCN')+10$(NOT UC_COM(UCN,COM_VAR,'LHS',R,'0',C,S,'UCN'));
* If no RHS/LHS defined, set it to EPS/1 for all other side years except for the IE option as on other side
UC_COM(UCN,COM_VAR,'RHS',R,LL,C,S,'UCN')$((NOT UC_COM(UCN,COM_VAR,'RHS',R,'0',C,S,'UCN'))$UC_COM(UCN,COM_VAR,'LHS',R,LL,C,S,'UCN'))=
EPS$(NOT MIYR_1(LL))+UC_COM(UCN,COM_VAR,'LHS',R,LL,C,S,'UCN')$LASTLL(LL);
UC_COM(UCN,COM_VAR,'LHS',R,LL,C,S,'UCN')$((NOT UC_COM(UCN,COM_VAR,'LHS',R,'0',C,S,'UCN'))$UC_COM(UCN,COM_VAR,'RHS',R,LL,C,S,'UCN'))=
(1+(UC_COM(UCN,COM_VAR,'RHS',R,LL,C,S,'UCN')-1)$LASTLL(LL));
);
$GOTO FINISH
*-------------------------------------------------------------------------------
$LABEL PREP_EXT
IF(CARD(PRC_DYNUC),
* Set LHS default IE to 5 and RHS default to 10
PRC_DYNUC(UC_N,'LHS',R,LL--ORD(LL),P,UC_GRPTYPE,BD)$((NOT PRC_DYNUC(UC_N,'LHS',R,'0',P,UC_GRPTYPE,BD))$PRC_DYNUC(UC_N,'LHS',R,LL,P,UC_GRPTYPE,BD))=5;
PRC_DYNUC(UC_N,'RHS',R,LL--ORD(LL),P,UC_GRPTYPE,BD)$((NOT PRC_DYNUC(UC_N,'RHS',R,'0',P,UC_GRPTYPE,BD))$PRC_DYNUC(UC_N,'RHS',R,LL,P,UC_GRPTYPE,BD))=
PRC_DYNUC(UC_N,'LHS',R,'0',P,UC_GRPTYPE,BD)+10$(NOT PRC_DYNUC(UC_N,'LHS',R,'0',P,UC_GRPTYPE,BD));
LOOP(BD, UC_GMAP_P(R,UC_N,UC_GRPTYPE,P)$PRC_DYNUC(UC_N,'RHS',R,'0',P,UC_GRPTYPE,BD) = YES);
* If no RHS defined, set RHS to EPS for all LHS years except for the IE option according to LHS
PRC_DYNUC(UC_N,'RHS',R,LL,P,UC_GRPTYPE,BD)$((NOT PRC_DYNUC(UC_N,'RHS',R,'0',P,UC_GRPTYPE,BD))$PRC_DYNUC(UC_N,'LHS',R,LL,P,UC_GRPTYPE,BD))=
EPS+PRC_DYNUC(UC_N,'LHS',R,LL,P,UC_GRPTYPE,BD)$LASTLL(LL);
* If no LHS defined, set LHS to 1 for all RHS years except for the IE option according to RHS
PRC_DYNUC(UC_N,'LHS',R,LL,P,UC_GRPTYPE,BD)$((NOT PRC_DYNUC(UC_N,'LHS',R,'0',P,UC_GRPTYPE,BD))$PRC_DYNUC(UC_N,'RHS',R,LL,P,UC_GRPTYPE,BD))=
(1+(PRC_DYNUC(UC_N,'RHS',R,LL,P,UC_GRPTYPE,BD)-1)$LASTLL(LL))$(NOT SAMEAS('NCAP',UC_GRPTYPE));
* Inter-/extrapolate without reset
$ SET RESET 1
$ BATINCLUDE prepparm PRC_DYNUC 'UC_N,SIDE,R' 'P,UC_GRPTYPE,BD' "" T 1 1
* Disable growth/decay equation in first period of availability if no constant specified
PRC_DYNUC(UCN,RHS,RTP(R,TT(T+1),P),UC_GRPTYPE,BD)$((RTP(R,T,P)->MIYR_1(TT))$(NOT UC_GMAP_P(R,UCN,UC_GRPTYPE,P))$PRC_DYNUC(UCN,'LHS',R,'0',P,UC_GRPTYPE,BD)) = 0;
* Set final UC_GMAPs for REDUCE
LOOP(BD,UC_JMAP('1',UCN,RHS,R,T(MIYR_1),P,UC_GRPTYPE)$PRC_DYNUC(UCN,RHS,R,'0',P,UC_GRPTYPE,BD) = YES);
);
LOOP(UC_DYNBND(UCN,BD),UC_T_SUCC(R,UCN,'0') = YES);
$GOTO FINISH
*-------------------------------------------------------------------------------
$LABEL PPM_EXT
* Make sure that standard UCs are not generated
LOOP(UC_DYNBND(UCN,BD),
UC_ON(R,UCN) = NO;
UC_R_SUM(R,UCN) = NO;
UC_R_EACH(R,UCN) = NO;
);
$GOTO FINISH
*-------------------------------------------------------------------------------
$LABEL EQU_EXT
*-------------------------------------------------------------------------------
%EQ%%2_UCRTP(UC_N,RTP(%R_T%,P),UC_GRPTYPE,BD(%4) %SWT%)$(PRC_DYNUC%MX%(UC_N,'RHS',R,T,P,UC_GRPTYPE,BD))..
*-------
* Difference in capacity between previous and current period
(SUM(SAMEAS(T-1,V(TT))$RTP(R,V,P), POWER(PRC_DYNUC(UC_N,'LHS',R,T,P,UC_GRPTYPE,BD),LEAD(T)) *
%VARV%_CAP(R,V,P %SWS%))*(1-2$BDUPX(BD))
- %VAR%_CAP(R,T,P %SOW%) *(1-2$BDUPX(BD)))$SAMEAS('CAP',UC_GRPTYPE)
*-------
+
* Difference in NCAP between previous and current period
(SUM(SAMEAS(T-1,V(TT))$RTP(R,V,P), POWER(PRC_DYNUC(UC_N,'LHS',R,T,P,UC_GRPTYPE,BD),LEAD(T)) *
%VARV%_NCAP(R,V,P %SWS%))*(1-2$BDUPX(BD))
- %VAR%_NCAP(R,T,P %SOW%) *(1-2$BDUPX(BD)))$SAMEAS('NCAP',UC_GRPTYPE)
*-------
+
* Difference in ACT between previous and current period
(SUM(SAMEAS(T-1,V(TT))$RTP_VARA(R,V,P), POWER(PRC_DYNUC(UC_N,'LHS',R,T,P,UC_GRPTYPE,BD),LEAD(T)) *
SUM((RTP_VINTYR(R,MODLYEAR,V,P),PRC_TS(R,P,S)),%VARTT%_ACT(R,MODLYEAR,V,P,S %SWS%)))*(1-2$BDUPX(BD))
- SUM((RTP_VINTYR(R,MODLYEAR,T,P),PRC_TS(R,P,S)), %VAR%_ACT(R,MODLYEAR,T,P,S %SOW%)) *(1-2$BDUPX(BD)))$SAMEAS('ACT',UC_GRPTYPE)
=%3=
* RHS constant term
PRC_DYNUC(UC_N,'RHS',R,T,P,UC_GRPTYPE,BD)*LEAD(T)*(-1+2$BDUPX(BD))
;
$IFI %2==E $GOTO FINISH
*-------------------------------------------------------------------------------
%EQ%%2_UCRTC(UC_N,COM_VAR,RTC(%R_T%,C),ANNUAL(S),BD(%4) %SWT%)$(UC_COM(UC_N,COM_VAR,'RHS',RTC,S,'UCN')$UC_DYNBND(UC_N,BD))..
*-------
* Difference in COMNET between previous and current period
(SUM(SAMEAS(T-1,Y(TT))$RTC(R,Y,C), POWER(UC_COM(UC_N,COM_VAR,'LHS',RTC,S,'UCN'),LEAD(T)) *
SUM(RHS_COMBAL(R,Y,C,S),%VARTT%_COMNET(R,Y,C,S %SWS%)))*(1-2$BDUPX(BD))
- SUM(RHS_COMBAL(R,T,C,S), %VAR%_COMNET(R,T,C,S %SOW%)) *(1-2$BDUPX(BD)))$SAMEAS('NET',COM_VAR)
*-------
+
* Difference in COMPRD between previous and current period
(SUM(SAMEAS(T-1,Y(TT))$RTC(R,Y,C), POWER(UC_COM(UC_N,COM_VAR,'LHS',RTC,S,'UCN'),LEAD(T)) *
SUM(RHS_COMPRD(R,Y,C,S),%VARTT%_COMPRD(R,Y,C,S %SWS%)))*(1-2$BDUPX(BD))
- SUM(RHS_COMPRD(R,T,C,S), %VAR%_COMPRD(R,T,C,S %SOW%)) *(1-2$BDUPX(BD)))$SAMEAS('PRD',COM_VAR)
=%3=
* RHS constant term
UC_COM(UC_N,COM_VAR,'RHS',R,T,C,S,'UCN')*LEAD(T)*(-1+2$BDUPX(BD))
;
*-------------------------------------------------------------------------------
$LABEL FINISH