-
Notifications
You must be signed in to change notification settings - Fork 38
/
eqobjfix.rpt
60 lines (51 loc) · 3 KB
/
eqobjfix.rpt
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
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* Copyright (C) 2000-2023 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).
*=============================================================================*
* EQOBJFIX the objective functions capacity fixed costs
* %1 - mod or v# for the source code to be used
* - fixed O&M, including surveillance during decommissioning
* - fixed taxes and subsidies
*=============================================================================*
*------------------------------------------------------------------------------
* Cases IV - Fixed O&M including surveillance during decommissioning, V - Taxes
*------------------------------------------------------------------------------
* Fixed O&M Cost and Taxes
LOOP(OBJ_FCUR(NCAP_YES(R,V,P),CUR),
$IF NOT %VALIDATE% == 'YES'
F = (VAR_NCAP.L(R,V,P)$T(V)+NCAP_PASTI(R,V,P)$PYR(V)) / OBJ_DIVIV(R,V,P);
* [UR] 07.10.2003: for validating MARKAL using VAR_CAP instead of VAR_NCAP+NCAP_PASTI, since it is possible
* in MARKAL to decommission capacity of demand devices (DMD)
$IF %VALIDATE% == 'YES' F = VAR_CAP.L(R,V,P)$(T(V)$(OBJ_1A(R,V,P)+OBJ_1B(R,V,P)))+F$(OBJ_2A(R,V,P)+OBJ_2B(R,V,P));
*-------------------------------------------------------------------------------
OPTION CLEAR=YKAGE;
LOOP((OBJ_SUMIV(K_EOH,R,V,P,JOT,LIFE),INVSTEP(K_EOH,JOT,LL,JOT)),YKAGE(Y_EOH(LL+(ORD(AGE)-1)),LL,AGE)$OPYEAR(LIFE,AGE) = YES;);
*-------------------------------------------------------------------------------
IF(RTP_ISHPR(R,V,P),
PAR_OBJFIX(R,V,Y_EOH,P,CUR) =
OBJ_DISC(R,Y_EOH,CUR) * F * (1+SUM(PERIODYR(T,Y_EOH),RTP_CPX(R,V,P,T))$NCAP_CPX(R,V,P)) *
SUM(YKAGE(Y_EOH,K,AGE),
(
OBJ_FOM(R,K,P,CUR) * (1+SUM(RTP_SHAPE(R,V,P,'1',J,JJ),SHAPE(J,AGE)*MULTI(JJ,Y_EOH)-1)) +
OBJ_FTX(R,K,P,CUR) * (1+SUM(RTP_SHAPE(R,V,P,'2',J,JJ),SHAPE(J,AGE)*MULTI(JJ,Y_EOH)-1)) -
OBJ_FSB(R,K,P,CUR) * (1+SUM(RTP_SHAPE(R,V,P,'3',J,JJ),SHAPE(J,AGE)*MULTI(JJ,Y_EOH)-1))
)
$IF %VALIDATE% == 'YES'
$(PERIODYR(V,Y_EOH)*T(V)+OBJ_2A(R,V,P)+OBJ_2B(R,V,P))
);
ELSE
PAR_OBJFIX(R,V,Y_EOH,P,CUR) =
OBJ_DISC(R,Y_EOH,CUR) * F *
SUM(YKAGE(Y_EOH,K,AGE), (OBJ_FOM(R,K,P,CUR)+OBJ_FTX(R,K,P,CUR)-OBJ_FSB(R,K,P,CUR)));
));
* Decommissioning Surveillance
LOOP(OBJ_FCUR(NCAP_YES(R,V,P),CUR)$OBJ_DLAGC(R,V,P,CUR),
OPTION YK1 < OBJ_SUMIVS;
PAR_OBJFIX(R,V,Y,P,CUR) = PAR_OBJFIX(R,V,Y,P,CUR) +
SUM(YK1(Y,K), OBJ_DISC(R,Y,CUR) * OBJ_DLAGC(R,K,P,CUR) *
(VAR_NCAP.L(R,V,P)$MILESTONYR(V) + NCAP_PASTI(R,V,P)$PASTYEAR(V)));
);
OBJ_C = SUM((R,V,Y,P,CUR)$PAR_OBJFIX(R,V,Y,P,CUR),PAR_OBJFIX(R,V,Y,P,CUR));
OBJ_D = SUM(RDCUR(R,CUR),SUM(OBV,SUM_OBJ('OBJFIX',OBV)*VAR_OBJ.L(R,OBV,CUR)));
DISPLAY OBJ_C,OBJ_D;