The UFZ services GitLab and Mattermost will be unavailable on Monday, December 06 from 06:00 AM to 08:00 AM due to maintenance work.

Commit ed43bcb5 authored by Markus Millinger's avatar Markus Millinger
Browse files

Changed naming of set from biomass to feed, to incorporate also power options

parent 2802304c
This diff is collapsed.
......@@ -25,18 +25,18 @@ for time=1:f.runTime
f.priceDev(time) = (1+s.priceDevFactor)^(time-1);
end
indexWheat = find(contains(f.feedNames,{'Wheat'}));
f.wheatIncome = f.wheatPriceStart*f.feedYieldFM(:,indexWheat).*f.priceDev'; %/ha
indexWheat = find(contains(f.cropNames,{'Wheat'}));
f.wheatIncome = f.wheatPriceStart*f.cropYieldFM(:,indexWheat).*f.priceDev'; %/ha
s.labourCost = s.labourCostStart.*f.priceDev;
s.dieselCost = s.dieselCostStart.*f.priceDev;
f.feedLabourCostHa = s.labourCost.*f.feedLabourHa';
f.feedDieselCostHa = s.dieselCost.*f.feedDieselHa';
f.feedExpensesHa = f.feedLabourCostHa+f.feedDieselCostHa+ones(1,s.runTime).*(f.feedMachineFixHa+f.feedMachineVarHa+f.feedServiceCostsHa+f.feedDirectCostsHa)';
f.cropLabourCostHa = s.labourCost.*f.cropLabourHa';
f.cropDieselCostHa = s.dieselCost.*f.cropDieselHa';
f.cropExpensesHa = f.cropLabourCostHa+f.cropDieselCostHa+ones(1,s.runTime).*(f.cropMachineFixHa+f.cropMachineVarHa+f.cropServiceCostsHa+f.cropDirectCostsHa)';
f.wheatProfit = f.wheatIncome-f.feedExpensesHa(indexWheat,:)';
f.feedProfit = f.wheatProfit;
f.feedIncomeHa = f.feedExpensesHa+ones(1,s.runTime).*f.feedProfit';
f.wheatProfit = f.wheatIncome-f.cropExpensesHa(indexWheat,:)';
f.cropProfit = f.wheatProfit;
f.cropIncomeHa = f.cropExpensesHa+ones(1,s.runTime).*f.cropProfit';
%% Residue price development
......@@ -45,12 +45,12 @@ end
%% Calculate price categories
f.feedPrice = f.feedIncomeHa./f.feedYieldDM'; %/tDM
f.feedPriceGJBase = f.feedPrice./f.feedDMenergyContent'; % /GJ
f.cropPrice = f.cropIncomeHa./f.cropYieldDM'; %/tDM
f.cropPriceGJBase = f.cropPrice./f.cropDMenergyContent'; % /GJ
for c=1:f.cat
for b=1:f.numFeed
f.feedPriceGJ(:,b,c) = f.feedPriceGJBase(b,:);
for b=1:f.numCrop
f.cropPriceGJ(:,b,c) = f.cropPriceGJBase(b,:);
end
for b=1:f.numResidue
if c==1
......@@ -66,6 +66,6 @@ end
end
%% Land demand / biomass
f.landReqGJFuel = (f.feedDMenergyContent.*f.feedYieldDM).^-1; %ha/GJ_feed
f.landReqGJFuel = (f.cropDMenergyContent.*f.cropYieldDM).^-1; %ha/GJ_crop
end
\ No newline at end of file
......@@ -30,7 +30,7 @@ while error==1 && runComplete==0
solName = ['matsol' num2str(scenario) '1'];
elseif contains(version,'costMin')
gamsTemp.solveOption.val = 1;
solName = ['matsol' num2str(scenario) '1'];
solName = ['matsol' num2str(scenario) '2'];
end
wgdx('matdata.gdx',g.d,g.C,g.I,g.J,g.F,g.B,g.BR,g.BF,g.tb,g.ts,g.fuelType,g.PwrSrc,g.PwrMix,g.PwrRes,...
......@@ -144,17 +144,17 @@ costAnnualstr.form = 'full';
costAnnual = rgdx(solName, costAnnualstr);
gamsOut.costAnnual=costAnnual.val;
biomassstr.uels = {strsplit(num2str(s.year)), s.techNames, f.biomassNames,g.cats};
biomassstr.name = 'biomassUse';
biomassstr.form = 'full';
biomassUse = rgdx(solName, biomassstr);
gamsOut.biomassUse=biomassUse.val;
feedstr.uels = {strsplit(num2str(s.year)), s.techNames, f.feedNames,g.cats};
feedstr.name = 'feedUse';
feedstr.form = 'full';
feedUse = rgdx(solName, feedstr);
gamsOut.feedUse=feedUse.val;
biomassImportstr.uels = {strsplit(num2str(s.year)), s.techNames, f.biomassNames};
biomassImportstr.name = 'biomassUseImport';
biomassImportstr.form = 'full';
biomassUseImport = rgdx(solName, biomassImportstr);
gamsOut.biomassUseImport=biomassUseImport.val;
feedImportstr.uels = {strsplit(num2str(s.year)), s.techNames, f.feedNames};
feedImportstr.name = 'feedUseImport';
feedImportstr.form = 'full';
feedUseImport = rgdx(solName, feedImportstr);
gamsOut.feedUseImport=feedUseImport.val;
capstr.uels = {strsplit(num2str(s.year)), s.techNames};
capstr.name = 'cap';
......@@ -218,19 +218,19 @@ gamsOut.prd2 = (sum(gamsOut.prd,3).*s.powerByprod+sum(gamsOut.prd,3).*s.heatBypr
% o.prd4 = sum(sum(o.prd3,2),1); %2 to 1 dimension, sorted by markets
% Biomass Use (time,tech) [PJ]
gamsOut.biomassUse2 = squeeze(sum(sum(gamsOut.biomassUse,4),3)); %4 to 2 dimensions sorted by techs
gamsOut.feedUse2 = squeeze(sum(sum(gamsOut.feedUse,4),3)); %4 to 2 dimensions sorted by techs
% Biomass Use (time,biomass Type) [PJ]
gamsOut.biomassUse3 = squeeze(sum(sum(gamsOut.biomassUse,2),4)); %4 to 2 dimensions sorted by biomass
gamsOut.feedUse3 = squeeze(sum(sum(gamsOut.feedUse,2),4)); %4 to 2 dimensions sorted by biomass
% Biomass Use (time, tech, biomass) [PJ]
gamsOut.biomassUse4 = squeeze(sum(gamsOut.biomassUse,4)); %4 to 3 dimensions
gamsOut.feedUse4 = squeeze(sum(gamsOut.feedUse,4)); %4 to 3 dimensions
% Biomass Use Import (time,tech) [PJ]
gamsOut.biomassUseImport2 = squeeze(sum(gamsOut.biomassUseImport,3)); %3 to 2 dimensions sorted by techs
gamsOut.feedUseImport2 = squeeze(sum(gamsOut.feedUseImport,3)); %3 to 2 dimensions sorted by techs
% Biomass Use Import (time,biomass Type) [PJ]
gamsOut.biomassUseImport3 = squeeze(sum(gamsOut.biomassUseImport,2)); %3 to 2 dimensions sorted by biomass
gamsOut.feedUseImport3 = squeeze(sum(gamsOut.feedUseImport,2)); %3 to 2 dimensions sorted by biomass
%%Correcting total demand in PJ by the fuel economy per km
indexEl = find(contains(s.techNames,{'BEV'}));
......
......@@ -42,13 +42,13 @@ g.F.name = 'fuel';
g.F.type='set';
g.F.uels = {s.fuelNames};
g.BR.name = 'biomassResidue';
g.BR.name = 'feedResidue';
g.BR.type='set';
g.BR.uels = {f.residueNames};
g.BF.name = 'biomassCrop';
g.BF.name = 'feedCrop';
g.BF.type='set';
g.BF.uels = {f.feedNames};
g.BF.uels = {f.cropNames};
% Power sources
g.PwrSrc.name = 'powerSource';
......@@ -65,18 +65,18 @@ g.PwrRes.type='set';
g.PwrRes.uels = {'PowerRes'};
% Biomass/Feestock: Residues+Cultivation+power source combined
g.B.name = 'biomass';
g.B.name = 'feed';
g.B.type ='set';
g.B.uels = {f.biomassNames};
g.B.uels = {f.feedNames};
%% Set Dependency
% Which technologies use which biomass
g.techbiomass = transpose(techData.data.techInputData(96:(96+f.numResidue+f.numFeed+f.numPowerSource-1),1:s.numTech));
g.techbiomass = transpose(techData.data.techInputData(96:(96+f.numResidue+f.numCrop+f.numPowerSource-1),1:s.numTech));
g.techbiomass(isnan(g.techbiomass))=0;
g.tb.uels = {s.techNames,f.biomassNames};
g.tb.uels = {s.techNames,f.feedNames};
g.tb.name = 'TB';
g.tb.type='set';
g.tb.form='full';
......@@ -216,7 +216,7 @@ gamsTemp.ghgEmisT1.form = 'full';
gamsTemp.ghgEmisT1.val = r.ghgTransport1GJfeed(:,1); %kgCo2eq/GJ = ktCo2eq/PJ
% Conversion efficiency biomass specific
gamsTemp.convEtaBiomSpec.uels = {strsplit(num2str(s.year)), f.biomassNames, s.techNames};
gamsTemp.convEtaBiomSpec.uels = {strsplit(num2str(s.year)), f.feedNames, s.techNames};
gamsTemp.convEtaBiomSpec.name = 'convEtaBiomSpec';
gamsTemp.convEtaBiomSpec.type = 'parameter';
gamsTemp.convEtaBiomSpec.form = 'full';
......@@ -302,7 +302,7 @@ gamsTemp.resImportMax.val = g.resImportMax'; %PJ_biomass
% Land demand [ha/PJ]
gamsTemp.landDmdPJ.uels = {strsplit(num2str(s.year)), f.feedNames};
gamsTemp.landDmdPJ.uels = {strsplit(num2str(s.year)), f.cropNames};
gamsTemp.landDmdPJ.name = 'landDmdPJ';
gamsTemp.landDmdPJ.type = 'parameter';
gamsTemp.landDmdPJ.form = 'full';
......@@ -318,11 +318,11 @@ gamsTemp.landMax.val = g.landMax;
% land use initial [ha]
gamsTemp.feedLandUseInit.uels = {f.feedNames};
gamsTemp.feedLandUseInit.name = 'feedLandUseInit';
gamsTemp.feedLandUseInit.uels = {f.cropNames};
gamsTemp.feedLandUseInit.name = 'cropLandUseInit';
gamsTemp.feedLandUseInit.type = 'parameter';
gamsTemp.feedLandUseInit.form = 'full';
gamsTemp.feedLandUseInit.val = f.feedLandUseInit'; %[ha]
gamsTemp.feedLandUseInit.val = f.cropLandUseInit'; %[ha]
% lifetime of technologies
......@@ -354,22 +354,22 @@ gamsTemp.bioResPot.form = 'full';
gamsTemp.bioResPot.val = f.resPot';
% Potential of biomass residue import
gamsTemp.bioResPotImport.uels = {strsplit(num2str(s.year)), f.biomassNames};
gamsTemp.bioResPotImport.uels = {strsplit(num2str(s.year)), f.feedNames};
gamsTemp.bioResPotImport.name = 'bioResPotImport';
gamsTemp.bioResPotImport.type = 'parameter';
gamsTemp.bioResPotImport.form = 'full';
gamsTemp.bioResPotImport.val = f.resPotImport';
% Biomass price (time, biomass, cats) [Mio/PJ]
gamsTemp.biomassPrice.uels = {strsplit(num2str(s.year)), f.biomassNames, g.cats};
gamsTemp.biomassPrice.name = 'biomassPrice';
gamsTemp.biomassPrice.uels = {strsplit(num2str(s.year)), f.feedNames, g.cats};
gamsTemp.biomassPrice.name = 'feedPrice';
gamsTemp.biomassPrice.type = 'parameter';
gamsTemp.biomassPrice.form = 'full';
gamsTemp.biomassPrice.val = [f.feedPriceGJ f.resPrice f.powerPrice]; %[Mio/PJ]
gamsTemp.biomassPrice.val = [f.cropPriceGJ f.resPrice f.powerPrice]; %[Mio/PJ]
% Biomass price Import (time, biomass) [Mio/PJ]
gamsTemp.biomassPriceImport.uels = {strsplit(num2str(s.year)), f.biomassNames};
gamsTemp.biomassPriceImport.name = 'biomassPriceImport';
gamsTemp.biomassPriceImport.uels = {strsplit(num2str(s.year)), f.feedNames};
gamsTemp.biomassPriceImport.name = 'feedPriceImport';
gamsTemp.biomassPriceImport.type = 'parameter';
gamsTemp.biomassPriceImport.form = 'full';
gamsTemp.biomassPriceImport.val = squeeze(gamsTemp.biomassPrice.val(:,:,3));% + f.ImportPriceSur';
......
......@@ -37,13 +37,13 @@ for time=1:s.runTime
+f.ghgPowerDrying.*s.ghgEFPower(time)...
+f.ghgDiesel.*s.ghgEFDiesel(time); %kg Co2eq/ha/a
f.ghgCultivationTotTfm(time,:) = f.ghgCultivationTotHa(time,:)./f.feedYieldFM(time,:); %%kg Co2eq/tFM - FeedYield without temporal development
f.ghgCultivationTotGJfeed(time,:) = f.ghgCultivationTotTfm(time,:)./f.feedFMenergyContent; %%kg Co2eq/GJfeed
f.ghgCultivationTotTfm(time,:) = f.ghgCultivationTotHa(time,:)./f.cropYieldFM(time,:); %%kg Co2eq/tFM - FeedYield without temporal development
f.ghgCultivationTotGJfeed(time,:) = f.ghgCultivationTotTfm(time,:)./f.cropFMenergyContent; %%kg Co2eq/GJfeed
%%
f.ghgTransport1(time) = (s.ghgTransp1DistFull.*s.ghgTranspDieselFull+...
s.ghgTransp1DistEmpty.*s.ghgTranspDieselEmpty).*s.ghgEFDiesel(time)./s.ghgTransp1Amount; %CO2eq/tFM
f.ghgTransport1GJfeed(time,1:f.numFeed) = f.ghgTransport1(time).*ones(1,f.numFeed)./f.feedFMenergyContent; %CO2eq/tFM
f.ghgTransport1GJfeed(time,1:f.numCrop) = f.ghgTransport1(time).*ones(1,f.numCrop)./f.cropFMenergyContent; %CO2eq/tFM
%% Hard coded reference to Poplar - redo!
......@@ -52,8 +52,8 @@ for time=1:s.runTime
elseif s.heatOption==2
s.ghgEFHeat(time,:) = ones([s.numTech,1])*(...
f.ghgCultivationTotHa(time,6)... %CO2eq/ha
+f.ghgTransport1(time).*f.feedYieldFM(6)... %CO2eq/tFM * tFM/ha
)./(f.feedYieldGJ(6).*10^6*s.heatEta); %CO2eq/ha *(GJ/ha)^-1 * GJ/MJ * eta^-1
+f.ghgTransport1(time).*f.cropYieldFM(6)... %CO2eq/tFM * tFM/ha
)./(f.cropYieldGJ(6).*10^6*s.heatEta); %CO2eq/ha *(GJ/ha)^-1 * GJ/MJ * eta^-1
end
s.ghgP1tot(time,:) = s.ghgP1Heat(time,:).*s.ghgEFHeat(time,:)...
+ s.ghgP1Power(time,:).*s.ghgEFPower(time)... + s.ghgP1Hydrogen.*s.ghgEFHydrogen(time)...Hydrogen GHG is calculated in GAMS
......@@ -63,16 +63,16 @@ for time=1:s.runTime
+s.ghgP2Power(time,:).*s.ghgEFPower(time)...
+s.ghgP2CH3OH(time,:).*s.ghgEFCH3OH(time);
s.ghgP2Byprod(time,:) = s.ghgP2YieldByprod.*10^3-s.ghgP2ByprodUpgradePower.*s.ghgEFPower(time); %/tFM_feed
s.ghgP2Byprod(time,:) = s.ghgP2YieldByprod.*10^3-s.ghgP2ByprodUpgradePower.*s.ghgEFPower(time); %/tFM_crop
s.ghgTransport21(time,:) = s.ghgTranspGasGridPower.*s.ghgEFPower(time)+s.ghgTranspProcessHeat.*s.ghgEFHeat(time,:);
s.ghgTransport22(time,:) = (s.ghgTransp2DistFull.*s.ghgTranspDieselFull+s.ghgTransp2DistEmpty.*s.ghgTranspDieselEmpty).*s.ghgEFDiesel(time)./s.ghgTranspAmount;
s.ghgTransport2(time,:) = s.ghgTransport21(time,:)+s.ghgTransport22(time,:);
s.P1toGJfactor(time,:) = s.ghgP1AllocationFactor.*s.ghgP2AllocationFactor...
./(s.feedFMenergyContent.*s.plantConvEta(time,:));
./(s.cropFMenergyContent.*s.plantConvEta(time,:));
s.P2toGJfactor(time,:) = s.ghgP2AllocationFactor./(s.feedFMenergyContent.*s.plantConvEta(time,:));
s.P2toGJfactor(time,:) = s.ghgP2AllocationFactor./(s.cropFMenergyContent.*s.plantConvEta(time,:));
s.ghgCultivationTotGJ(time,:) = zeros(1,s.numTech);%s.ghgCultivationTotHa(time,:).*s.hatoGJfactor(time,:);
s.ghgTransport1GJ(time,:) = zeros(1,s.numTech);%s.ghgTransport1(time,:).*s.P1toGJfactor(time,:);
......@@ -80,8 +80,8 @@ for time=1:s.runTime
%%
s.ghgP1totGJ(time,:) = s.ghgP1tot(time,:).*s.P1toGJfactor(time,:);
s.ghgP2totGJ(time,:) = s.ghgP2tot(time,:).*s.P2toGJfactor(time,:);
s.ghgP2ByprodGJ(time,:) = -s.ghgP2Byprod(time,:)./(s.feedFMenergyContent.*s.plantConvEta(time,:));
s.ghgTransport2GJ(time,:) = s.ghgTransport2(time,:);%./(s.feedFMenergyContent.*s.plantConvEta(time,:));
s.ghgP2ByprodGJ(time,:) = -s.ghgP2Byprod(time,:)./(s.cropFMenergyContent.*s.plantConvEta(time,:));
s.ghgTransport2GJ(time,:) = s.ghgTransport2(time,:);%./(s.cropFMenergyContent.*s.plantConvEta(time,:));
%kgCo2eq/GJ
s.fuelGHGemission(time,:) = s.ghgCultivationTotGJ(time,:)+s.ghgTransport1GJ(time,:)+s.ghgP1totGJ(time,:)+s.ghgP2totGJ(time,:)+s.ghgP2ByprodGJ(time,:)+s.ghgTransport2GJ(time,:);
......
......@@ -27,9 +27,11 @@ close all;
%% Data Import
% Conversion options, biomass crops and residues and other data
% techData = importdata('../data/BENOPT_inputData_200409.xls'); %Save to variable - comment out if the .mat-file is up to date
% techData = ...
% importdata('../data/BENOPT_inputData_200409.xls'); %Save to variable - comment out if the .mat-file is up to date
% save('../data/techData.mat','techData'); %Save to .mat-file - comment out if the .mat-file is up to date
techData = importdata('../data/techData.mat'); %reads data from .mat file
techData = ...
importdata('../data/techData.mat'); %reads data from .mat file
%Set NaN data to zero
techData.data.techInputData(isnan(techData.data.techInputData)) = 0;
......@@ -58,21 +60,22 @@ for scenario = 1:noScenarios
%Set country specific data
countryID = 'DE';
% powerDataCountry = powerData(contains(powerData.cet_cest_timestamp,s.weatherYear),...
% contains(powerData.Properties.VariableNames,countryID));
% powerDataCountry = ...
% powerData(contains(powerData.cet_cest_timestamp,s.weatherYear),...
% contains(powerData.Properties.VariableNames,countryID));
% save(['../data/powerData' countryID '.mat'],'powerDataCountry'); %Save to .mat-file - comment out if the .mat-file is up to date
powerDataCountry = importdata(['../data/powerData' countryID '.mat']); %reads data from .mat file
[f,g,s] = setCountryData(techData,countryID,powerDataCountry,s,f); %Set country specific data
powerDataCountry = ...
importdata(['../data/powerData' countryID '.mat']); %reads data from .mat file
[f,g,s] = ...
setCountryData(techData,countryID,powerDataCountry,s,f); %Set country specific data
%Set variables
[f,g,s] = setData(techData,f,g,s);
%Calculate GHG emissions
[s,f] = ghgEmissions(s,f);
%% Monte Carlo sensitivity analysis example of VRE module
% monteCarlo(1000,s,f,g,techData);
%% Scenario loop
switch scenario
case 1 %Base scenario
......@@ -82,14 +85,15 @@ for scenario = 1:noScenarios
end
%Calculation of hourly residual load and other power metrics
[residualLoad,powerYear,s.RENshare,s.RENshare100] = vrePower(s.onShore,...
[residualLoad,powerYear,s.RENshare,s.RENshare100] = ...
vrePower(s.onShore,...
s.offShore,s.photoV,s.powerLoad,s.demandPower,s.MustRun,...
s.RENMustRun,s.powerStorage,s.powerStorageMax,s.PVcapFacInst,s.WindOncapFacInst,s.WindOffcapFacInst);
s.RENMustRun,s.powerStorage,s.powerStorageMax,s.PVcapFacInst,...
s.WindOncapFacInst,s.WindOffcapFacInst);
%Calculation of surplus power (TWh) per year and time step
[s.surplusPowerVar,s.surplusPowerVar2,s.posResLoad,s.resLoadDataHour] = surplusPower(g,s,residualLoad,powerYear);
% figure()
% plot(s.surplusPowerVar)
[s.surplusPowerVar,s.surplusPowerVar2,s.posResLoad,s.resLoadDataHour] = ...
surplusPower(g,s,residualLoad,powerYear);
%Setting dispatchable power demand as upper limit in power sector and
%passenger road transport demand
......@@ -99,26 +103,33 @@ for scenario = 1:noScenarios
% Call function for feed cost development
[s,f] = feedCost(s,f);
%Calculate GHG emissions
[s,f] = ghgEmissions(s,f);
% OPEX & CAPEX calculation
[o(scenario),p(scenario)] = costDevNoLearning(s,f);
% Define GAMS parameters
[gamsTemp,g] = gamsVar(s,f,o(scenario),p(scenario),scenario,g,techData);
[gamsTemp,g] = ...
gamsVar(s,f,o(scenario),p(scenario),scenario,g,techData);
% Run GAMS
[gamsOut(scenario),g] = gamsRun(s,f,g,scenario,noScenarios,gamsTemp,'ghgMax');
[gamsOut(scenario),g] = ...
gamsRun(s,f,g,scenario,noScenarios,gamsTemp,'ghgMax');
%% Iterate pareto
noPareto = 1;
% Set the GHG target vector (as share of max. achievable GHG abatement from GHG
% optimization)
% Set the GHG target vector (as share of max. achievable GHG abatement
% from GHG optimization)
iterStep = [0.99,0.95,0.85,0.7,0.5,0.6];
for paretoIter=1:noPareto
gamsTemp.ghgTarget.val = iterStep(paretoIter)*gamsOut(scenario).ghgTarget;
gamsTemp.ghgTarget.val = ...
iterStep(paretoIter)*gamsOut(scenario).ghgTarget;
[paretoTemp,g] = gamsRun(s,f,g,scenario,noScenarios,gamsTemp,'costMin');
[paretoTemp,g] = ...
gamsRun(s,f,g,scenario,noScenarios,gamsTemp,'costMin');
paretoVar(scenario,paretoIter) = paretoTemp;
end
end
......
......@@ -959,7 +959,7 @@ for scenario=1:6
else
subplot(2,4,scenario+1)
end
area(gamsOut(scenario).biomassUse3,'LineStyle','none')
area(gamsOut(scenario).feedUse3,'LineStyle','none')
end
legend([f.feedNames f.residueNames f.powerNames],'Position',[0.82 0.385 0.1 0.25],'Interpreter','none','FontSize',13)
%%
......
......@@ -72,9 +72,9 @@ g.demandEnd = techData.data.countryData(71:71+s.numSectors-1,i
s.plantCap = techData.data.techInputData(198+indexCountry,1:end);%*10^6;
f.feedYieldFMlow = techData.data.feedstockInputData(40+indexCountry,1:end); %GJ/tFM
f.feedYieldFMhigh = techData.data.feedstockInputData(70+indexCountry,1:end); %GJ/tFM
f.feedLandUseInit = techData.data.feedstockInputData(100+indexCountry,1:end); % [ha]
f.cropYieldFMlow = techData.data.feedstockInputData(40+indexCountry,1:end); %GJ/tFM
f.cropYieldFMhigh = techData.data.feedstockInputData(70+indexCountry,1:end); %GJ/tFM
f.cropLandUseInit = techData.data.feedstockInputData(100+indexCountry,1:end); % [ha]
f.resPot = techData.data.biomassResPot(1:f.numResidue,indexCountry);
s.ghgEFPowerData = techData.data.powerEmissions(1+indexCountry,[2017 2018 2030 2050]-2016); %kgCO2eq/kWh interp1([2015 2020 2025 2030 2035 2040 2045 2050],co2sourceData,2020:1:2050,'linear');
......
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment