$TITLE Small routine to generate consumer prices from long-term marginal costs and average costs option limcol=99999, limrow=99999, solprint=on,cns=conopt4; $onlisting $if not set scenario $abort --scenario name is missing sets process, commodity, region, attribute, t, v, ts, userconstraint, io/in,out/,bd; parameter veda_vdd(attribute, commodity, process, t, region, v, ts, userconstraint) all veda results prc_capact(region,process) capacity to activity conversion factor coef_af(region,v,t,process,ts,bd) g_yrfr(region,ts) year fraction of timeslice ts out_etsco2(commodity,t) EU-wide average ETS price $gdxin %scenario%.gdx $load process $load commodity $load region $load attribute $load t $load v $load ts $load userconstraint $load veda_vdd $load bd $load prc_capact $load coef_af $load g_yrfr $load out_etsco2 $gdxin ; parameter afv(region,v,t,process) maximum capacity factor at annual level for a process af(region,t,process) maximum capacity factor at annual level for a process ; afv(region,v,t,process) = coef_af(region,v,t,process,"ANNUAL","UP")+coef_af(region,v,t,process,"ANNUAL","FX"); afv(region,v,t,process)$(sum(ts$(coef_af(region,v,t,process,ts,"UP")+coef_af(region,v,t,process,ts,"FX")),1) $(not afv(region,v,t,process))) = sum(ts, g_yrfr(region,ts)*(coef_af(region,v,t,process,ts,"UP")+coef_af(region,v,t,process,ts,"FX"))); af(region,t,process)$sum(v,afv(region,v,t,process)) = smax(v,afv(region,v,t,process)); sets milestone(t) milestone years /2019,2020,2025,2030,2035,2040,2045,2050/ trun(t) running years /2020,2025,2030,2035,2040,2045,2050/ * trun(t) running years /2020/ r(region) regions for which the model is running /AT,BE,BG,CY,CZ,DE,DK,EE,ES,FI,FR,EL,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK,UK,CH,NO,HR/ * r(region) regions for which the model is running /CH/ top(region,process,commodity,t,io) sc_attr_long(attribute) system cost attributes /COST_act,COST_comx,Cost_Fixx, COST_flo,COST_flox,COST_fom,COST_inv,Cost_Dec,COST_invx * Cost_Ire (this is not to be included in the equation) / sc_attr_short(attribute) system cost attributes /COST_act,COST_comx,COST_flo,COST_flox * Cost_Ire (this is not to be included in the equation) / sc_attr_com(attribute) system cost attributes related only to commodity /cost_comx,cost_flo,cost_flox * cost_ire (this is not to be included in the equation) / aux_c(commodity) commodities not be accounted in the calculations / ABRCO2c,BIOGLY1,GreenCert-TRA,INDHTHDUM,TOTCH4,AGRCO2N,AGRCO2c,AGRCO2v,AGRSCO2N,AUX_COMBATS01,AUX_COMBATS02,AUX_COMBATS03,AUX_ESTBATS101, AUX_ESTBATS102,AUX_ESTBATS103,AUX_ESTBATS201,AUX_ESTBATS202,AUX_ESTCAESS00,AUX_ESTCAESS101,AUX_ESTCAESS102,AUX_ESTCAESS201,AUX_ESTHYDPS101,AUX_ESTHYDPS201,AUX_RSDBATS01,AUX_RSDBATS02,AUX_RSDBATS03,AUX_TRABAT, BIODDGS,BIOGLY2,BIOPULP,BIOSAP,BIOSTIL,BRFCA1,BRFCA2,BRFCA3,BRFCO2,BRFEZ1,BRFEZ2,BRFEZ3,BRFEZ4,BRFWAT,CATACHEM,CCUCO2,CCUGCO2,CO2WOT,COMCH4N,COMCO2N,COMCO2c,COMCO2v,COMCOXN,COMCXFN,COMN2ON,COMNOXN,COMPMAN,COMPMBN, COMSCO2N,COMSF6N,COMSO2N,COMVOCN,DUMGrw,DUM_ELCCO2N,DUM_SUPCO2N,ELCCH4N,ELCCO2I,ELCCO2N,ELCCO2P,ELCCO2c,ELCCO2v,ELCCOXN,ELCLossInTransmsn,ELCN2ON,ELCNOXI,ELCNOXN,ELCNUC,ELCNUCA,ELCPMAI,ELCPMAN,ELCPMBI,ELCPMBN,ELCSCO2GN, ELCSCO2N,ELCSO2I,ELCSO2N,ELCVOCI,ELCVOCN,ETS2CO2,ETSCO2,GHG,GreenCert-ELC,GreenCert-FEL,GreenCert-FGH,GreenCert-FHT,GreenCert-FIN,GreenCert-HTH,INDCBL,INDCH4N,INDCH4P,INDCO2N,INDCO2P,INDCO2c,INDCO2v,INDCOXN,INDCOXP, INDCXFN,INDCXFP,INDN2ON,INDN2OP,INDNETSCO2,INDNOXN,INDNOXP,INDPMAN,INDPMAP,INDPMBN,INDPMBP,INDSCO2GN,INDSO2N,INDSCO2N,INDSCO2P,INDSF6N,INDSF6P,INDSO2P,INDVOCN,INDVOCP,ISOBUTYL,MALBAU,MALCAL,MALSCR,MCMCLK,MCUORE,MCUSCR, MCUSCU,MGHRYC,MISBFS,MISCST,MISDIR,MISORE,MISOXY,MISPLT,MISQLI,MISRFC,MISRIR,MISSCR,MISSNT,MLMSTN,MPPGYP,MPPKAO,MPPNOH,MPPOXY,MPPPUP,MPPRYC,MPPWOO,NONCO2,NUCAGR,NUCCONC,NUCCONS,NUCENRE,NUCENRU1,NUCENRU2,NUCLWR,NUCU308, Penalty_REQ,RAGCAKE,RSDCH4N,RSDCO2N,RSDCO2c,RSDCO2v,RSDCOXN,RSDCXFN,RSDN2ON,RSDNOXN,RSDPMAN,RSDPMBN,RSDSF6N,RSDSO2N,RSDVOCN,SE_TRACH4P,SE_TRACH4N,SE_AGRCO2N,SE_COMCO2N,SE_INDCO2N,SE_RSDCO2N,SE_TRACO2N,SE_TRACO2Nintl,SE_TRACO2P, SE_TRACOXN,SE_TRACOXP,SE_TRACXFN,SE_TRACXFP,SE_TRAN2ON,SE_TRAN2OP,SE_TRANOXN,SE_TRANOXP,SE_TRAPMAN,SE_TRAPMAP,SE_TRAPMBN,SE_TRAPMBP,SE_TRASF6N,SE_TRASF6P,SE_TRASO2N,SE_TRASO2P,SE_TRAVOCN,SE_TRAVOCP,SNKAFF,SNKCB1,SNKCB2,SNKCB3, SNKCO2GN,SNKCO2N,SNKDGF,SNKDGO,SNKDOF,SNKDOGF,SNKDOGO,SNKDOO,SNKDSAOF,SNKDSAON,SNKEOR,SUBS-REN_FeedIn,SUBS-REN_FeedInBiog,SUBS-REN_FeedInBiogCHP,SUBS-REN_FeedInBiom,SUBS-REN_FeedInBiomCHP,SUBS-REN_FeedInGeo,SUBS-REN_FeedInLaHyd, SUBS-REN_FeedInOce,SUBS-REN_FeedInPV,SUBS-REN_FeedInSmHyd,SUBS-REN_FeedInSolTh,SUBS-REN_FeedInWaste,SUBS-REN_FeedInWindN,SUBS-REN_FeedInWindO,SUBS-REN_INV,SUBS-REN_INVBiog,SUBS-REN_INVBiom,SUBS-REN_INVGeo,SUBS-REN_INVLaHyd,SUBS-REN_INVOce, SUBS-REN_INVPV,SUBS-REN_INVSmHyd,SUBS-REN_INVSolTh,SUBS-REN_INVWaste,SUBS-REN_INVWind,SUPCH4N,SUPCH4P,SUPCO2N,SUPCO2P,SUPCO2c,SUPCO2v,SUPCOXN,SUPCOXP,SUPCXFN,SUPCXFP,SUPN2ON,SUPN2OP,SUPNETSCO2,SUPNOXN,SUPNOXP,SUPPMAN,SUPPMAP,SUPPMBN,SUPPMBP,SUPSCO2GN, SUPSCO2N,SUPSF6N,SUPSF6P,SUPSO2N,SUPSO2P,SUPVOCN,SUPVOCP,TBioFS,TBioFuel,TBiofuel-g1,TBiofuel-g2,TOTCO2,TOTGHG,TOTN2O,TRACH4N,TRACH4P,TRACO2N,TRACO2Nintl,TRACO2P,TRACOXN,TRACOXP,TRACXFN,TRACXFP,TRAN2ON,TRAN2OP,TRANOXN,TRANOXP,TRAPMAN,TRAPMAP,TRAPMBN, TRAPMBP,TRASF6N,TRASF6P,TRASO2N,TRASO2P,TRAVOCN,TaxPEC,TRAVOCP,TradeA AUX_STH2SDT,AUX_STH2SGT,AUX_STH2SUG,AUX_VARSOUT * Exclude also demand commodities NEU,NR_BuildLight,R_Flat,TAvi_Pas_Intra-EU,RCDR,GDP,IAL,IAM,ICH,ICL,ICM,ICU,IGF,IGH,IIS,ILM,INM,IOI,IPH,NR_ICTM,NR_ShopS,NR_SpoRecr,NR_StLight,IPL,TAvi_Pas_Extra-EU,TBunk,THDT,TLCV,NR_BuildTech,NR_Hosp,TRai_Frt,NR_Refrig,NR_ShopL,AGR_Agr_For_Fis,POP,INF, NR_HoRest,NR_Offic,NR_Vent,RCWA,RDWA,RLIG,ROEL,RREF,R_DetH,R_SDetH,TAvi_Frt_Extra-EU,TAvi_Frt_Intra-EU,TAvi_Pas_Dom,TBus,TCar,TMop,TMot,TNav,TRai_Pas_Conv,TRai_Pas_Hspd,TRai_Pas_Metro ELCForPeak,INDFINOIL,INDFINGAS * GN1 * Additional commodities (e.g., demands) not to be considered in the price calculation AGR_Low_Ent_Het,ITOT_AHT,ITOT_BDL,ITOT_BIO,ITOT_COA,OUT_TRABAT,ITOT_BGS,Bldg_DETPre45-Wal,Bldg_SDEPre45-Wal,COMFINOIL,EUVAR1DUM,INDFINSOLID,AGR_Lig,AGR_Ven,ITOT_OIL,ITOT_REN,NR_ES-HO-Cook,ITOT_ELC,NR_ES-HO-SpCool-I,NR_ES-HR-SpCool, NR_ES-SR-WatHeat,Bldg_FLTPre99-Win,Bldg_HoRest-Cei,Bldg_Hosp-Win,Bldg_SDEPre89-Cei,Bldg_SDEPre89-Wal,Bldg_DETPre09-Wal,Bldg_DETPre69-Wal,Bldg_DETPre79-Cei,Bldg_DETPre99-Cei,Bldg_FLTPre69-Wal,Bldg_Offic-Cei,RSDFINOIL,R_ES-SD-Cook,R_ES-SD-SpCool-I, SER_BGS,SER_BIO,EUVAR5DUM,FINOIL,ITOT_HH2,RSDNRG,TRAFINOIL,NR_ES-OF-Cook,NR_ES-SL-SpHeat,NR_ES-SS-SpHeat-I,TRA_GAS,TRA_GASintl,TRA_H2intl,NR_ES-SS-SpHeat,NR_ES-SS-WatHeat,RES_AHT,AGR_Far_Mac_Dri,AGR_Pum_Dev_Dis,AGR_Pum_Dev_Ele,AGR_Spe_Ele_Use,AGR_Spe_Het_Use, RES_OIL,RES_REN,R_ES-DH-SpCool,R_ES-FL-SpHeat-I,Bldg_DETPre09-Cei,Bldg_DETPre09-Win,Bldg_DETPre45-Cei,R_ES-SD-SpCool,Bldg_DETPre45-Win,Bldg_DETPre69-Cei,Bldg_DETPre69-Win,Bldg_DETPre79-Wal,SER_HET,Bldg_DETPre79-Win,Bldg_DETPre89-Cei,Bldg_DETPre89-Wal,Bldg_DETPre89-Win, Bldg_DETPre99-Wal,Bldg_DETPre99-Win,Bldg_FLTPre09-Cei,SER_COA,SER_ELC,Bldg_FLTPre09-Wal,Bldg_FLTPre09-Win,Bldg_FLTPre45-Cei,Bldg_FLTPre45-Wal,Bldg_FLTPre45-Win,Bldg_FLTPre69-Cei,Bldg_FLTPre69-Win,Bldg_FLTPre79-Cei,Bldg_FLTPre79-Wal,Bldg_FLTPre79-Win,Bldg_FLTPre89-Cei,Bldg_FLTPre89-Wal, Bldg_FLTPre89-Win,Bldg_FLTPre99-Cei,Bldg_FLTPre99-Wal,Bldg_HoRest-Wal,Bldg_HoRest-Win,Bldg_Hosp-Cei,Bldg_Hosp-Wal,Bldg_Offic-Wal,Bldg_Offic-Win,Bldg_SDEPre09-Cei,Bldg_SDEPre09-Wal,Bldg_SDEPre09-Win,Bldg_SDEPre45-Cei,Bldg_SDEPre45-Win,Bldg_SDEPre69-Cei,Bldg_SDEPre69-Wal,Bldg_SDEPre69-Win, Bldg_SDEPre79-Cei,Bldg_SDEPre79-Wal,Bldg_SDEPre79-Win,Bldg_SDEPre89-Win,Bldg_SDEPre99-Cei,Bldg_SDEPre99-Wal,Bldg_SDEPre99-Win,Bldg_ShopL-Cei,Bldg_ShopL-Wal,Bldg_ShopL-Win,Bldg_ShopS-Cei,Bldg_ShopS-Wal,Bldg_ShopS-Win,Bldg_SpoRecr-Cei,Bldg_SpoRecr-Wal,Bldg_SpoRecr-Win,DUMBioFuelConstr,EUCAPDUM, EUVAR2DUM,EUVAR3DUM,EUVAR4DUM,FC_TOT,FC_TOTintl,FINSOLID,TRA_BGSintl,ITOT_GAS,NR_ES-HO-SpCool,NR_ES-HO-SpHeat,NR_ES-HO-SpHeat-I,NR_ES-HO-WatHeat,NR_ES-HR-Cook,NR_ES-HR-SpCool-I,NR_ES-HR-SpHeat,NR_ES-HR-SpHeat-I,NR_ES-HR-WatHeat,NR_ES-OF-SpCool,NR_ES-OF-SpCool-I,NR_ES-OF-SpHeat,NR_ES-OF-SpHeat-I, NR_ES-OF-WatHeat,NR_ES-SL-Cook,NR_ES-SL-SpCool,NR_ES-SL-SpCool-I,NR_ES-SL-SpHeat-I,NR_ES-SL-WatHeat,NR_ES-SR-Cook,NR_ES-SR-SpCool,NR_ES-SR-SpCool-I,NR_ES-SR-SpHeat,NR_ES-SR-SpHeat-I,NR_ES-SS-Cook,NR_ES-SS-SpCool,NR_ES-SS-SpCool-I,RES_BDL,RES_BGS,RES_BIO,RES_COA,RES_ELC,RES_GAS,RES_HET,RES_HH2,R_ES-DH-70-SpHeat, R_ES-DH-70-SpHeat-I,R_ES-DH-Cook,R_ES-DH-SpCool-I,R_ES-DH-SpHeat,R_ES-DH-SpHeat-I,R_ES-DH-WatHeat,R_ES-FL-Cook,R_ES-FL-SpCool,R_ES-FL-SpCool-I,R_ES-FL-SpHeat,R_ES-FL-WatHeat,R_ES-SD-SpHeat,R_ES-SD-SpHeat-I,R_ES-SD-WatHeat,SER_AHT,SER_BDL,SER_GAS,SER_HH2,SER_OIL,SER_REN,TRA_BGS,TRA_BLQ,TRA_BLQintl,TRA_H2,TRA_OIL,TRA_OILintl AGR_Mot_Dri,ITOT_HET * Exclude industrial byproducts INDBLQ,GASBFG SUPRPP GN1 / aux_p(process) storage processes to be exlcuded / * TRABAT_Battery STGCOO02,COMBATS02,COMBATS01,COMBATS03,ESTCAESS101,ESTCAESS00,ESTCAESS201,RSDBATS01,RSDBATS02,RSDBATS03,STH2SDT,STH2SGT,STH2SUG,NGASTOR-BE,NGASTOR-FI,NGASTOR-FR,NGASTOR-MT,NGASTOR-NL,NGASTOR-PT,ESTBATS101,ESTBATS102,ESTBATS103,ESTBATS201,ESTBATS202,ESTCAESS102,ESTHYDPS101,ESTHYDPS201,STGCOO01,NGASTOR-UK,STGHTH01,STGHTH02,LNGSTOR-BE,LNGSTOR-PT,LNGSTOR_E-UK,LNGSTOR_M-FR,NGASTOR-BG,NGASTOR-CZ,NGASTOR-EE,NGASTOR-ES,NGASTOR-IT,NGASTOR-NO,NGASTOR-PL,NGASTOR-RO,LNGSTOR_W-UK,LNGSTOR_M-ES,LNGSTOR-NL,LNGSTOR_E-IT,LNGSTOR_W-IT,NGASTOR-AT,NGASTOR-CH,NGASTOR-DE,NGASTOR-LT,NGASTOR-LV,NGASTOR-SI,NGASTOR-SK,LNGSTOR_A-FR,NGASTOR-SE,NGASTOR-CY,NGASTOR-DK,NGASTOR-HU,NGASTOR-IE,NGASTOR-LU,LNGSTOR_A-ES SUPRPP00 / co2(commodity) CO2 commodities / ETSCO2, RSDCO2N,COMCO2N,AGRCO2N,TRACO2N,INDCO2N,INDCO2P,ELCCO2N,SUPCO2N,SUPCO2P,ELCCO2P,ELCCO2I,TOTCO2/ c(commodity) commodities not in aux and which are produced or consumed by processes p_c(commodity) commodities for which price is calculated / AGRAHT,AGRBDL,AGRBGS,AGRBIO,AGRCOA,AGRDST,AGRELC,AGRGAS,AGRGEO,AGRGHH2,AGRGHT,AGRHET,AGRHH2,AGRLPG,AGROIL,AGRSOL,BIOBTLFTDSL,BIOCRP1,BIOCRP2,BIODME,BIODST,BIOEMHV,BIOETBE,BIOETHA,BIOGAS,BIOHVO,BIOLGCFS,BIOLIQ,BIOMtaH,BIOMUN,BIOOILFS,BIOPROP,BIORPS,BIOSLU,BIOSTAFS,BIOSUGFS,BIOWOO,BRFH2,COABRO,COACOK,COAHAR,COALIG,COHRSV,COLRSV,COMAHT,COMBDL,COMBGS,COMBIO,COMCOA,COMCOO,COMELC,COMGAS,COMGEO,COMGHH2,COMGHT,COMHET,COMHH2,COMLPG,COMNRG,COMOIL,COMSOL,COOFRE,DUMDCAES,DUMDCAES00,DUMSTOR,ELCAHT,ELCBDL,ELCBFG,ELCBFT,ELCBGS,ELCCOG,ELCCOH,ELCCOL,ELCCOP,ELCDST,ELCGAS,ELCGEO,ELCHFO,ELCHIG,ELCHIGG,ELCHYD,ELCIIS,ELCLOW,ELCMED,ELCMUN,ELCSLU,ELCSOL,ELCTID,ELCWAV,ELCWIN,ELCWOO,GAS2ST,GASBFT,GASCOG,GASCOP,GASIIS,GASLNG,GASNAT,GASP2G,GASP2G_G,GASPIP,GASRSV,HETHTH,IAMHTH,ICHELE,ICHHTH,ICHMCH,ICHOTH,ICHPRC, ICHSTM,ICLHTH,ICMPRC,ICUHTH,IGFHTH,IGHHTH,IISHTH,ILMHTH,ILMPRC,IMPLH2,INDAHT,INDBFG,INDBFT,INDBGS,INDBIO,INDCOA,INDCOB,INDCOG,INDCOK,INDCOL,INDCOP,INDELC,INDGAS,INDGEO,INDGHH2,INDHFO,INDHH2,INDHTH,INDIIS,INDLFO,INDLPG,INDMUN,INDNAP,INDNRG,INDRFG,INDSLU,INDSOL,INFELE,INFHTH,INFMCH,INFOTH,INFPRC,INFSTM,INMELE,INMHTH,INMMCH,INMOTH,INMPRC,INMSTM,IOIELE,IOIHTH,IOIMCH,IOIOTH,IOIPRC,IOISTM,IPPHTH,IPPPRC,ISYNG,ISYNGDST,ISYNGGAS,ISYNGGSL,ISYNGKER,NUCH2,OILCRD,OILDST,OILDSTkt,OILFDS,OILGSL,OILGSLkt,OILHFO,OILKER,OILKERkt,OILLPG,OILNAP,OILNEU,OILOTH,OILPIP,OILRFG,OILRSV,RAGOILFS,REFHTH,RENAHT,RENGEO,RENGHT,RENHYD,RENSOL,RENWIN,RSDAHT,RSDBDL,RSDBGS,RSDBIO,RSDCOA,RSDCOO,RSDELC,RSDGAS,RSDGEO,RSDGHH2,RSDGHT,RSDHET,RSDHH2,RSDLPG,RSDOIL,RSDSOL,SUP_H2,SUP_TOT,SUPAHT,SUPBIO,SUPCOA,SUPCRD,SUPELC,SUPGAS, SUPHTH,SUPRPG,SUPSOL,SYNDME,SYNGDST,SYNGGSL,SYNGH2,SYNGH2CT,SYNGH2CU,SYNGH2DT,SYNGKER,SYNGLPG,SYNGNAP,SYNGOTH,SYNH2,SYNH2CT,SYNH2CU,SYNH2DT,SYNMtaH,TRABGS,TRABGSintl,TRABGSintraeuintl,TRADST,TRADSTB30,TRADSTintl,TRADSTintraeuintl,TRADSTSYNG,TRADSTSYNGB30,TRAELC,TRAELC_EV,TRAELC_V2G,TRAELCintl,TRAELCintraeuintl,TRAETH,TRAFTS,TRAGAS,TRAGASintl,TRAGASintraeuintl,TRAGGH2,TRAGH2,TRAGSLE85,TRAGSLSP95,TRAGSLSP95E10,TRAGSLSYNGE85,TRAGSLSYNGSP95,TRAGSLSYNGSP95E10,TRAHFO,TRAHFOintl,TRAHFOintraeuintl,TRAJTK,TRAJTKintl,TRAJTKintraeuintl,TRALGH2,TRALGH2Intl,TRALGH2intraeuIntl,TRALH2,TRALH2Intl,TRALH2intraeuIntl,TRALPG,TRAN_ELC,TRAN_ELCintl * SUPRPP / bltrd_c(commodity) commodities entering into the bileteral trade / ELCHIG GASNAT,GASP2G_G, * to be added in the topology GASP2G SYNH2CU,SYNH2CT,SYNGH2CT,SYNGH2CU SYNGDST,SYNGGSL,SYNGKER / flow(attribute) /var_fin, var_fout/ gasoline (commodity) commodities referring to gasoline /TRAGSLSP95,TRAGSLSYNGE85,TRAGSLSYNGSP95E10,TRAGSLSYNGSP95,TRAGSLSP95E10,TRAGSLE85/ diesel (commodity) commodities referring to diesel /TRADSTB30,TRADSTSYNG,TRADSTSYNGB30,TRADST/ ethanol(commodity) commodities referring to ethanol /BIOETHA, BIOETBE,BIOMTAH/ biodiesel(commodity) commodities referring to biodiesel /BIOBTLFTDSL,BIODME,BIODST,BIOEMHV,BIOHVO/ ; $include Fuel_Prices_JRC_primary_commodity.gms alias (c2,com2,commodity),(p,p2,process), (lmil, milestone),(ts,s),(c,cc1,cc2),(r,r2),(region,region2); c(commodity)$(not aux_c(commodity))=yes$sum((region,p,t,v,ts,userconstraint),abs(veda_vdd("var_fin", commodity, p, t, region, v, ts, userconstraint)+veda_vdd("var_fout", commodity, p, t, region, v, ts, userconstraint))); top(region,p,c,t,"in")$((not co2(c)) and (not (aux_c(c))) and (not aux_p(p))) = sum((v,ts,userconstraint)$veda_vdd("var_fin", c, p, t, region, v, ts, userconstraint),1); top(region,p,c,t,"out")$((not co2(c)) and (not (aux_c(c))) and (not aux_p(p))) = sum((v,ts,userconstraint)$veda_vdd("var_fout", c, p, t, region, v, ts, userconstraint),1); parameter price_CO2(region, commodity,t) CO2 price in EUR per ton long_w(region, commodity, t) price weight for long term cost (the short term is 1-long_w) co2_tax(region,co2,t) lrun_bltrd(region,process,commodity,milestone) long run cost of interconnectors for the bilateraly traded commodity c dom(region,commodity,milestone) domestice production for commodity imp_prc(region, region, bltrd_p,commodity,milestone) imported amounts for commodity per source of origin and process imp(region, region,commodity,milestone) imported amounts for commodity per source of origin ; scalar tol cut-off tolerance below of which no price is calculated /5E-3/; long_w(r, c, t)=1; Parameter cf(commodity) conversion factor to PJ from kt; cf(c)=1; cf("BIOSUGFS")=0.079; cf("BIOHVO")=0.044; cf("BIOBTLFTDSL")=0.044; cf("OILDSTkt")=0.044; cf("BIOEMHV")=0.044; cf("BIOOILFS")=0.044; cf("BIOETBE")=0.0363; cf("BIOETHA")=0.0268; Positive Variable price(region,commodity,milestone) price of commodity in EUR per GJ per year price_final(region,commodity,milestone ) final price of the bilaterely traded commodity price_temp(region,commodity,milestone) temporary price reflecting the production cost or price as calculated from the previous model lrun(region,process,commodity,milestone) long run cost per process to produce the commmodity srun(region,process,commodity,milestone) short run cost per process to produce the commmodity fuel(region,process,commodity,c2, milestone) fuel cost of c2 used to produce commodity from process p cost_co2(region,process,commodity,milestone) co2 cost per process to produce the commmodity revenues(region,process,commodity,c2, milestone) revenues from byrpoduct c2 when producing commodity by process ; price_CO2(r,co2,t)=0; co2_tax(region,co2,t)=0; **** EVERYTHING CONVERTS TO EUR10 IN THE MODEL (NEED TO CHANGE THE SYSSETINGS) co2_tax("ch","AGRCO2N",t)=120*0.71; co2_tax("ch","COMCO2N",t)=120*0.71; co2_tax("ch","RSDCO2N",t)=120*0.71; * this needs some re-thinkng price_CO2(r,co2,t)$milestone(t) = max(0,co2_tax(r,co2,t),-sum(ts,veda_vdd("eq_combalm", co2, "-", t, r, "-", ts, "-"))/12*1000); * overwire the ETS price with the EU-wide average price price_CO2(r,"ETSCO2",t)$milestone(t) = max(0,out_etsco2("ETSCO2",t)); * long run and short run cost of interconnectors lrun_bltrd(region,p,commodity,milestone)$(bltrd_c(commodity)$bltrd_p(p)$(not aux_p(p))$pcg(p,commodity)$r(region)$trun(milestone) $(sum((flow,v,ts,userconstraint)$veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint),veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint)) gt tol)) = ( sum((sc_attr_long,v,ts,userconstraint)$((not sc_attr_com(sc_attr_long))$veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint))) +sum((sc_attr_long,v,ts,userconstraint)$(sc_attr_com(sc_attr_long)$veda_vdd(sc_attr_long,commodity,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,commodity,p,milestone,region,v,ts,userconstraint))) ) /sum((flow,v,ts,userconstraint)$veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint),veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint)) ; lrun_bltrd(region,p,commodity,milestone)$(sameas(commodity,"GN1")$bltrd_p(p)$(not aux_p(p))$pcg(p,commodity)$r(region)$trun(milestone) $(sum((flow,v,ts,userconstraint)$veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint),veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint)) gt tol)) = ( sum((sc_attr_long,v,ts,userconstraint)$((not sc_attr_com(sc_attr_long))$veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint))) +sum((sc_attr_long,v,ts,userconstraint)$(sc_attr_com(sc_attr_long)$veda_vdd(sc_attr_long,commodity,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,commodity,p,milestone,region,v,ts,userconstraint))) ) /sum((flow,v,ts,userconstraint)$veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint),veda_vdd(flow,commodity,p,milestone,region,v,ts,userconstraint)) ; * domestically produced and imported quantities of bilaterly traded fuels dom(r,bltrd_c,milestone)$trun(milestone) = sum((p,v,ts,userconstraint)$((not aux_p(p))$(not bltrd_p(p))$pcg(p,bltrd_c)$veda_vdd("var_fout",bltrd_c,p,milestone,r,v,ts,userconstraint)),veda_vdd("var_fout",bltrd_c,p,milestone,r,v,ts,userconstraint)); imp_prc(r,region,bltrd_p,bltrd_c,milestone)$(trun(milestone)$(not sameas(r,region)) $( sum((v,ts,userconstraint)$veda_vdd("var_fout",bltrd_c,bltrd_p,milestone,r,v,ts,userconstraint),veda_vdd("var_fout",bltrd_c,bltrd_p,milestone,r,v,ts,userconstraint)) eq sum((v,ts,userconstraint)$veda_vdd("var_fin",bltrd_c,bltrd_p,milestone,region,v,ts,userconstraint),veda_vdd("var_fin",bltrd_c,bltrd_p,milestone,region,v,ts,userconstraint)) ) ) = sum((v,ts,userconstraint)$veda_vdd("var_fout",bltrd_c,bltrd_p,milestone,r,v,ts,userconstraint),veda_vdd("var_fout",bltrd_c,bltrd_p,milestone,r,v,ts,userconstraint)) ; imp_prc(r,region,bltrd_p,"GN1",milestone)$(trun(milestone)$(not sameas(r,region)) $( sum((v,ts,userconstraint)$veda_vdd("var_fout","GN1",bltrd_p,milestone,r,v,ts,userconstraint),veda_vdd("var_fout","GN1",bltrd_p,milestone,r,v,ts,userconstraint)) eq sum((v,ts,userconstraint)$veda_vdd("var_fin","GN1",bltrd_p,milestone,region,v,ts,userconstraint),veda_vdd("var_fin","GN1",bltrd_p,milestone,region,v,ts,userconstraint)) ) ) = sum((v,ts,userconstraint)$veda_vdd("var_fout","GN1",bltrd_p,milestone,r,v,ts,userconstraint),veda_vdd("var_fout","GN1",bltrd_p,milestone,r,v,ts,userconstraint)) ; imp(r,region,bltrd_c,milestone)$trun(milestone) = sum(bltrd_p,imp_prc(r,region,bltrd_p,bltrd_c,milestone)+imp_prc(r,region,bltrd_p,"GN1",milestone)$sameas(bltrd_c,"ELCHIG")) ; equations eq_price price formation equation eq_lrun long run cost eq_srun short run cost eq_fuel fuel cost eq_co2 co2 costs eq_revenues revenues from by products eq_price_temp temporary price of bilateral traded commodities eq_price_final equation for caclulating the final price of bilateral traded commodities ; eq_lrun(region,p,c,milestone)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$p_c(c)$r(region)$(not aux_c(c))$trun(milestone) $(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ).. lrun(region,p,c,milestone) =e= long_w(region,c,milestone)*sum((sc_attr_long,v,ts,userconstraint)$((not sc_attr_com(sc_attr_long))$veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint))) /( (af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint)))$(af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint))) + (sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)))$(not af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint))) ) +(( long_w(region,c,milestone)*sum((sc_attr_long,v,ts,userconstraint)$(sc_attr_com(sc_attr_long)$veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint))) / sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) )) $(sum((sc_attr_long,v,ts,userconstraint)$(sc_attr_com(sc_attr_long)$veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint)),veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint)) gt 0) ; eq_srun(region,p,c,milestone)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$p_c(c)$r(region)$(not aux_c(c))$trun(milestone) $(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ).. srun(region,p,c,milestone) =e= (1-long_w(region,c,milestone))*sum((sc_attr_short,v,ts,userconstraint)$((not sc_attr_com(sc_attr_short))$veda_vdd(sc_attr_short,"-",p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_short,"-",p,milestone,region,v,ts,userconstraint))) /( (af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint)))$(af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint))) + (sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)))$(not af(region,milestone,p)*prc_capact(region,p)*sum((v,ts,userconstraint)$veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint),veda_vdd("var_cap","-",p,milestone,region,v,ts,userconstraint))) ) +(( (1-long_w(region,c,milestone))*sum((sc_attr_short,v,ts,userconstraint)$(sc_attr_com(sc_attr_short)$veda_vdd(sc_attr_short,c,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd(sc_attr_short,c,p,milestone,region,v,ts,userconstraint))) / sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) )) $(sum((sc_attr_short,v,ts,userconstraint)$(sc_attr_com(sc_attr_short)$veda_vdd(sc_attr_short,c,p,milestone,region,v,ts,userconstraint)),veda_vdd(sc_attr_short,c,p,milestone,region,v,ts,userconstraint)) gt 0) ; eq_fuel(region,p,c,c2, milestone)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$p_c(c)$r(region)$(not aux_c(c))$trun(milestone)$sum(p2$pcg(p2,c2),1)$(not aux_c(c2))$top(region,p,c2,milestone,"in")$(sum((p2,v,ts,userconstraint)$(pcg(p2,c2)$veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)) gt tol) $(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ).. fuel(region,p,c,c2, milestone) =e= ( sum((v,ts,userconstraint)$((veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint) gt tol) * $(sum((p2)$((not aux_p(p2))$pcg(p2,c)$veda_vdd("var_fout",c,p2,milestone,region,v,ts,userconstraint)),cf(c2)*veda_vdd("var_fout",c,p2,milestone,region,v,ts,userconstraint)) gt tol) * ), cf(c2)*veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint) ), veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint) *(price(region,c2,milestone)$(not bltrd_c(c2))+price_final(region,c2,milestone)$(bltrd_c(c2) $(dom(region,c2,milestone)+ sum(region2$imp(region,region2,c2,milestone),imp(region,region2,c2,milestone))) )) ) / sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) ) ; eq_co2(region,p,c,milestone)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$p_c(c)$r(region)$(not aux_c(c))$trun(milestone) $(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ).. cost_co2(region,p,c,milestone) =e= (( * take ETS price if the process belongs to ETS sum((v,co2,ts,userconstraint)$(sameas("ETSCO2", co2)$veda_vdd("var_fout", co2,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd("var_fout",co2,p,milestone,region,v,ts,userconstraint))*1e-3*price_CO2(region,co2,milestone)) * otherwise the CO2 price of the sector + sum((v,co2,ts,userconstraint)$((not sameas("ETSCO2",co2))$veda_vdd("var_fout", co2,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd("var_fout",co2,p,milestone,region,v,ts,userconstraint))*1e-3*price_CO2(region,co2,milestone)) $(sum((v,co2,ts,userconstraint)$(sameas("ETSCO2", co2)$veda_vdd("var_fout", co2,p,milestone,region,v,ts,userconstraint)),abs(veda_vdd("var_fout",co2,p,milestone,region,v,ts,userconstraint))*1e-3*price_CO2(region,co2,milestone)) eq 0) ) /sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) ) ; eq_revenues(region,p,c,c2, milestone)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$p_c(c)$p_c(c2)$r(region)$(not aux_c(c))$trun(milestone)$(not aux_c(c2))$top(region,p,c2,milestone,"out") $sum((p2,v,ts,userconstraint)$(pcg(p2,c2)$veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)),1)$(not sameas(c,c2)) $(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ).. revenues(region,p,c,c2,milestone) =e= (sum((v,ts,userconstraint)$(veda_vdd("var_fout",c2,p,milestone,region,v,ts,userconstraint) gt tol), veda_vdd("var_fout",c2,p,milestone,region,v,ts,userconstraint)*price(region,c2,milestone)) /sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) ) ; eq_price(region,c,milestone)$(p_c(c)$r(region)$(not aux_c(c))$trun(milestone)$sum(p$((not aux_p(p))$top(region,p,c,milestone,"out")),1) $sum(p$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)), sum((v,ts,userconstraint)$veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint),veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint))) $( sum((p,v,ts,userconstraint)$((not aux_p(p))$pcg(p,c)$veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)) gt tol) ).. price(region,c,milestone)$(sum((p,v,ts,userconstraint)$((not aux_p(p))$pcg(p,c)$veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)) gt tol) =e= sum(p$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$(sum((com2,v,ts,userconstraint)$(pcg(p,com2)$veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)), veda_vdd("var_fout",com2,p,milestone,region,v,ts,userconstraint)) gt tol) ), ( * long run cost lrun(region,p,c,milestone) * short run cost + srun(region,p,c,milestone) * fuel input cost (excluding CO2 direct emissions costs) + sum(c2$((not aux_c(c2))$top(region,p,c2,milestone,"in")$(sum((p2,v,ts,userconstraint)$(pcg(p2,c2)$veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)) gt tol) $(sum((v,ts,userconstraint)$(veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint)) gt tol)), fuel(region,p,c,c2, milestone)) * CO2 costs + cost_co2(region,p,c,milestone) * revenues from by marketed product (i.e., the byproduct is primary commodity for at least 1 process) * - sum(c2$(top(region,p,c2,milestone,"out")$sum((p2,v,ts,userconstraint)$(pcg(p2,c2)$veda_vdd("var_fout",c2,p2,milestone,region,v,ts,userconstraint)),1)$(not sameas(c,c2))), revenues(region,p,c,c2,milestone)) ) *sum((v,ts,userconstraint)$(top(region,p,c,milestone,"out")$(not aux_p(p))$pcg(p,c)$veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)) ) * divide by the total output of primary commodity c from those processes which have it as main product (primary commodity group) /sum((p,v,ts,userconstraint)$((not aux_p(p))$pcg(p,c)$veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c,p,milestone,region,v,ts,userconstraint)) ; eq_price_temp(r,bltrd_c,milestone)$trun(milestone).. price_temp(r,bltrd_c,milestone) =e= price(r,bltrd_c,milestone)$(sum((p,v,ts,userconstraint)$((not aux_p(p))$pcg(p,bltrd_c)$veda_vdd("var_fout",bltrd_c,p,milestone,r,v,ts,userconstraint)),veda_vdd("var_fout",bltrd_c,p,milestone,r,v,ts,userconstraint)) gt tol) + sum(bltrd_p, lrun_bltrd(r,bltrd_p,bltrd_c,milestone)) + sum(bltrd_p, lrun_bltrd(r,bltrd_p,"GN1",milestone))$sameas("ELCHIG",bltrd_c) ; eq_price_final(r,bltrd_c,milestone)$(trun(milestone) $(dom(r,bltrd_c,milestone)+sum(region$imp(r,region,bltrd_c,milestone),imp(r,region,bltrd_c,milestone))) ).. price_final(r,bltrd_c,milestone) =e= ( price_temp(r,bltrd_c,milestone)*dom(r,bltrd_c,milestone) + sum(region$(imp(r,region,bltrd_c,milestone) $(dom(region,bltrd_c,milestone)+sum(region2$imp(region,region2,bltrd_c,milestone),imp(region,region2,bltrd_c,milestone)) )), price_final(region,bltrd_c,milestone)*imp(r,region,bltrd_c,milestone)) ) / ( dom(r,bltrd_c,milestone) + sum(region$imp(r,region,bltrd_c,milestone), imp(r,region,bltrd_c,milestone)) ) ; model price_calculation / eq_price.price eq_lrun.lrun eq_srun.srun eq_fuel.fuel eq_co2.cost_co2 * eq_revenues.revenues eq_price_temp.price_temp eq_price_final.price_final /; parameter check_price; * price.up(r,c,milestone)$(trun(milestone) $(sum(ts,veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-")) gt 0)) = sum(ts, veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-"))/sum(ts$veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-"),1); * price_final.up(r,c,milestone)$(trun(milestone) $(sum(ts, veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-")) gt 0)) = sum(ts, veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-"))/sum(ts$veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-"),1); solve price_calculation using cns; check_price(r,c,milestone)$(trun(milestone) $(sum(ts$(not (sameas(ts,"WP") or sameas(ts,"SP") or sameas(ts,"FP") or sameas(ts, "SP"))),veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-")*g_yrfr(r,ts)) gt 0)) = sum(ts$veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-"), veda_vdd("eq_combalm",c,"-",milestone,r,"-",ts,"-")*g_yrfr(r,ts)) - price.l(r,c,milestone); check_price(r,c,milestone)$(check_price(r,c,milestone) ge 0) = 0; *************************** *** Report the final prices *************************** parameter rprice(region,commodity,milestone) final prices to be reported and used in further calculations ; rprice(r,c,milestone)$trun(milestone) = price.l(r,c,milestone)$(not bltrd_c(c)) + price_final.l(r,c,milestone)$bltrd_c(c); * for gasoline and diesel take the average of the prices of all related commodities in the blending rprice(r,"TRAGSLSP95",milestone)$(trun(milestone)$sum((gasoline,p,v,ts,userconstraint)$veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint))) = sum((gasoline,p,v,ts,userconstraint)$veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint)*rprice(r,gasoline,milestone))/sum((gasoline,p,v,ts,userconstraint)$veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",gasoline,p,milestone,r,v,ts,userconstraint)); rprice(r,"TRADST",milestone)$(trun(milestone)$sum((diesel,p,v,ts,userconstraint)$veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint))) = sum((diesel,p,v,ts,userconstraint)$veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint)*rprice(r,diesel,milestone))/sum((diesel,p,v,ts,userconstraint)$veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",diesel,p,milestone,r,v,ts,userconstraint)); rprice(r,gasoline,milestone)=rprice(r,"TRAGSLSP95",milestone); rprice(r,diesel,milestone)=rprice(r,"TRADST",milestone); * for ethanol and bioediesel take the average of the prices of all related commodities in the blending rprice(r,"BIOETHA",milestone)$(trun(milestone)$sum((ethanol,p,v,ts,userconstraint)$veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint))) = sum((ethanol,p,v,ts,userconstraint)$veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint)*rprice(r,ethanol,milestone))/sum((ethanol,p,v,ts,userconstraint)$veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",ethanol,p,milestone,r,v,ts,userconstraint)); rprice(r,ethanol,milestone)=rprice(r,"BIOETHA",milestone); rprice(r,"BIODST",milestone)$(trun(milestone)$sum((biodiesel,p,v,ts,userconstraint)$veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint))) = sum((biodiesel,p,v,ts,userconstraint)$veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint),veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint)*rprice(r,biodiesel,milestone))/sum((biodiesel,p,v,ts,userconstraint)$veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint),cf(biodiesel)*veda_vdd("var_fin",biodiesel,p,milestone,r,v,ts,userconstraint)); rprice(r,biodiesel,milestone)=rprice(r,"BIODST",milestone); $ontext Provide levelised cost of the main energy carriers Electricity Diesel Gasoline natural gas biomass bioliquids e-liquids $offtext set p_c_out_bfe(commodity) commodities for which prices are to be reported as difference from the BFE prices /ELCHIG,INDLFO,INDGAS,INDELC,RSDOIL,RSDGAS,RSDELC,TRAGSLSP95,TRADST,TRAELC_EV/ p_c_out_oecd(commodity) commdities for which prices are to be reported for OECD /BIODST,BIOETHA,BIOGAS,BIOLIQ,SYNGDST,SYNGGSL,SYNGKER,SYNGLPG,SYNGNAP,SYNGOTH,GASP2G_G, ELCHIG, SYNH2CT,SYNH2CU,SYNH2DT,SYNGH2CT,SYNGH2CU,SYNGH2DT/ oecd_commodity(commodity) /ELCDST,ELCGAS,ELCHIG,INDELC,RSDELC,COMELC,TRAELC,TRAELC_EV,TRAGSLSP95,TRADST,INDLFO,RSDOIL,INDGAS,RSDGAS,COMGAS,COMBIO,COMOIL,RSDBIO,SYNGDST,SYNGGSL,SYNGKER,ELCWOO,INDBIO,BIOETHA,BIODST/ ; scalar EUR15; EUR15=1/0.925; parameter out_prices(region,commodity,milestone) end-consumer prices for Switzerland LCOE(region,commodity,milestone) "levelised cost per output commodity and region" oecd_LCOE(region, commodity, milestone) levelised cost for the oecd commodities ; out_prices(r,oecd_commodity,milestone)$trun(milestone)=EUR15*rprice(r,oecd_commodity,milestone); $onText out_prices("ELCHIG","2020")=34/3.6; out_prices("INDLFO","2020")=16.578499092; out_prices("INDGAS","2020")=18.819461164; out_prices("INDELC","2020")=32.896856788; out_prices("RSDOIL","2020")=18.9592433361995000; out_prices("RSDGAS","2020")=29.7068166618898000; out_prices("RSDELC","2020")=58.5103014235215000; out_prices("RSDBIO","2020")=6.0565536618800100; out_prices("RSDHET","2020")=6.0565536618800100; out_prices("TRAGSLSP95","2020")=45.908822967421400000; out_prices("TRADST","2020")=42.572069360848400000; out_prices("TRAELC_EV","2020")=58.510301423521500000; loop(milestone$(ord(milestone) gt 2), out_prices(p_c_out_bfe,milestone) = out_prices(p_c_out_bfe,milestone-1)+rprice("ch",p_c_out_bfe,milestone)-rprice("ch",p_c_out_bfe,milestone-1); ); out_prices(r,p_c_out_oecd,milestone) = rprice(r,p_c_out_oecd,milestone); ***************************** * LCOE calculation accross the system lifetime ***************************** lcoe(region,c,lmil)$price.l(region,c,lmil) = sum(milestone$(ord(milestone) le ord(lmil)),1/((1+0.5/100)**(ord(milestone)-0.5))* ( * capital and operating costs sum(p$(lrun.l(region,p,c,milestone) or srun.l(region,p,c,milestone) or lrun_bltrd(region,p,c,milestone)), sum((sc_attr_long,v,ts,userconstraint)$((not sc_attr_com(sc_attr_long))$veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint)),veda_vdd(sc_attr_long,"-",p,milestone,region,v,ts,userconstraint)) + sum((sc_attr_long,v,ts,userconstraint)$(sc_attr_com(sc_attr_long)$veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint)),veda_vdd(sc_attr_long,c,p,milestone,region,v,ts,userconstraint)) ) * fuel input costs + sum((p,c2)$fuel.l(region,p,c,c2, milestone), sum((v,ts,userconstraint)$((veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint) gt tol) $(sum((p2)$((not aux_p(p2))$pcg(p2,c)$veda_vdd("var_fout",c,p2,milestone,region,v,ts,userconstraint)),veda_vdd("var_fout",c,p2,milestone,region,v,ts,userconstraint)) gt tol) ), cf(c2)*veda_vdd("var_fin",c2,p,milestone,region,v,ts,userconstraint)*rprice(region,c2,milestone)) ) ) ) / sum(milestone$(ord(milestone) le ord(lmil)),1/((1+0.5/100)**(ord(milestone)-0.5))* sum(p$((not aux_p(p))$top(region,p,c,milestone,'out')$sum((v,ts,userconstraint)$veda_vdd("var_fout", c, p, milestone, region, v, ts, userconstraint),1)), sum((v,ts,userconstraint)$(top(region,p,c,milestone,"out")$(not aux_c(c)) $(not aux_p(p))$veda_vdd("var_fout", c, p, milestone, region, v, ts, userconstraint)),veda_vdd("var_fout", c, p, milestone, region, v, ts, userconstraint))) ) ; oecd_LCOE(region,oecd_commodity,lmil)$trun(lmil) = lcoe(region,oecd_commodity,lmil); $onecho>outpr%SCENARIO%.txt par=out_prices rng=out_prices!a3 rdim=2 cdim=1 par=oecd_LCOE rng=oecd_LCOE!a3 rdim=2 cdim=1 $offecho $offText $onecho>outpr%SCENARIO%.txt par=out_prices rng=out_prices!a3 rdim=2 cdim=1 $offecho execute_unload "outpr%SCENARIO%", out_prices; execute 'gdxxrw.exe i=outpr%SCENARIO%.gdx o="%SCENARIO%.xlsb" EpsOut="0" @outpr%SCENARIO%.txt' ; execute 'del out*%SCENARIO%*.txt out*%SCENARIO%*.gdx *%SCENARIO%*.~gm dim*%SCENARIO%*.gms' ; execute_unload "%SCENARIO%_pr.gdx"