Skip to content

Commit

Permalink
fixed tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Eggimann committed Dec 18, 2017
1 parent 65e6f1d commit 8001029
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 56 deletions.
2 changes: 1 addition & 1 deletion energy_demand/scripts/init_scripts.py
Expand Up @@ -537,7 +537,7 @@ def sig_param_calculation_including_fuel_switch(
service_tech_switched_p = share_service_tech_ey_p

# Calculate sigmoid diffusion parameters (if no switches, no calculations)
l_values_sig = s_generate_sigmoid.get_sig_diffusion_service(
l_values_sig = s_generate_sigmoid.get_l_values(
technologies,
tech_increased_service,
regions=regions,
Expand Down
20 changes: 9 additions & 11 deletions energy_demand/scripts/s_generate_sigmoid.py
Expand Up @@ -388,17 +388,14 @@ def get_tech_installed(enduse, fuel_switches):
# Convert set to lists
return list(installed_tech)

def get_sig_diffusion_service(
def get_l_values(
technologies,
tech_increased_service,
regions=False,
regional_specific=False
):
"""Calculates parameters for sigmoid diffusion of
technologies which are switched to/installed. With
`regional_specific` the assumption can be changed that
the technology diffusion is the same over all the uk
(if `regional_specific`== False, no regionally different diffusion)
"""Get l values (Maximum shares of each technology)
for all installed technologies
Arguments
----------
Expand All @@ -423,15 +420,13 @@ def get_sig_diffusion_service(
l_values_sig = defaultdict(dict)

if regional_specific:
# Maximum shares of each technology
for reg in regions:
for tech in tech_increased_service[reg]: # same techs for every region
for tech in tech_increased_service[reg]:
l_values_sig[reg][tech] = technologies[tech].tech_max_share
else:
if tech_increased_service == []:
pass
else:
# Maximum shares of each technology
for tech in tech_increased_service:
l_values_sig[tech] = technologies[tech].tech_max_share

Expand Down Expand Up @@ -543,8 +538,11 @@ def calc_sigm_parameters(
regional_specific=False
):
"""
Calculate sigmoid parameters for all technologies
with increased service in the future
Calculates parameters for sigmoid diffusion of
technologies which are switched to/installed. With
`regional_specific` the assumption can be changed that
the technology diffusion is the same over all the uk
(if `regional_specific`== False, no regionally different diffusion)
Arguments
---------
Expand Down
55 changes: 11 additions & 44 deletions tests/scripts/test_s_generate_sigmoid.py
Expand Up @@ -26,13 +26,10 @@ def test_tech_sigmoid_paramters():
result = s_generate_sigmoid.tech_sigmoid_parameters(
base_yr=2010,
technologies=technologies,
enduse='heating',
crit_switch_service=True,
installed_tech=['boilerA'],
l_values={'heating': {'boilerA': 1.0}},
l_values={'boilerA': 1.0},
service_tech_by_p={'boilerA': 0.5, 'boilerB': 0.5},
service_tech_switched_p={'boilerA': assump_fy, 'boilerB': 0},
fuel_switches=fuel_switches,
service_switches=service_switches)

y_calculated = diffusion_technologies.sigmoid_function(
Expand All @@ -48,13 +45,10 @@ def test_tech_sigmoid_paramters():
result = s_generate_sigmoid.tech_sigmoid_parameters(
base_yr=2010,
technologies=technologies,
enduse='heating',
crit_switch_service=False,
installed_tech=['boilerA'],
l_values={'heating': {'boilerA': 1.0}},
l_values={'boilerA': 1.0},
service_tech_by_p={'boilerA': 0.5, 'boilerB': 0.5},
service_tech_switched_p={'boilerA': assump_fy, 'boilerB': 0},
fuel_switches=fuel_switches,
service_switches=service_switches)

y_calculated = diffusion_technologies.sigmoid_function(
Expand Down Expand Up @@ -203,7 +197,6 @@ def test_calc_service_fuel_switched():
fuel_tech_p_by = {1: {'boilerA': 1.0}, 2: {'boilerB': 1.0}}

result = s_generate_sigmoid.calc_service_fuel_switched(
enduse,
fuel_switches,
technologies,
service_fueltype_p,
Expand All @@ -230,7 +223,6 @@ def test_calc_service_fuel_switched():
fuel_tech_p_by = {1: {'boilerA': 1.0}, 2: {'boilerB': 1.0}}

result = s_generate_sigmoid.calc_service_fuel_switched(
enduse,
fuel_switches,
technologies,
service_fueltype_p,
Expand All @@ -257,7 +249,6 @@ def test_calc_service_fuel_switched():
fuel_tech_p_by = {1: {'boilerA': 1.0}, 2: {'boilerB': 1.0}}

result = s_generate_sigmoid.calc_service_fuel_switched(
enduse,
fuel_switches,
technologies,
service_fueltype_p,
Expand All @@ -284,7 +275,6 @@ def test_calc_service_fuel_switched():
fuel_tech_p_by = {1: {'boilerA': 0.5, 'boilerC': 0.5,}, 2: {'boilerB': 1.0}}

result = s_generate_sigmoid.calc_service_fuel_switched(
enduse,
fuel_switches,
technologies,
service_fueltype_p,
Expand Down Expand Up @@ -333,8 +323,6 @@ def test_tech_l_sigmoid():
fueltypes=fueltype_lookup)
}

enduse = 'heating'

fuel_switches = [
read_data.FuelSwitch(
enduse='heating',
Expand All @@ -347,7 +335,7 @@ def test_tech_l_sigmoid():
service_fueltype_p = {1: 1.0, 2: 0.0}
service_tech_by_p = {'boilerA': 1.0, 'boilerB': 0.0}
fuel_tech_p_by = {1: {'boilerA': 1.0}, 2: {'boilerB': 1.0}}
installed_tech = {'heating':['boilerB']}
installed_tech = ['boilerB']

result = s_generate_sigmoid.tech_l_sigmoid(
fuel_switches,
Expand Down Expand Up @@ -384,8 +372,6 @@ def test_tech_l_sigmoid():
fueltypes=fueltype_lookup)
}

enduse = 'heating'

fuel_switches = [
read_data.FuelSwitch(
enduse='heating',
Expand All @@ -398,7 +384,7 @@ def test_tech_l_sigmoid():
service_fueltype_p = {1: 1.0, 2: 0.0}
service_tech_by_p = {'boilerA': 1.0, 'boilerB': 0.0}
fuel_tech_p_by = {1: {'boilerA': 1.0}, 2: {'boilerB': 1.0}}
installed_tech = {'heating':['boilerB']}
installed_tech = ['boilerB']

result = s_generate_sigmoid.tech_l_sigmoid(
fuel_switches,
Expand All @@ -422,7 +408,7 @@ def test_get_sig_diffusion():
'biomass': 5,
'hydrogen': 6,
'heat': 7}
base_yr = 2015

technologies = {
'boilerA': read_data.TechnologyData(
fuel_type='gas',
Expand All @@ -442,7 +428,7 @@ def test_get_sig_diffusion():
eff_achieved=1.0,
diff_method='linear',
market_entry=1990,
tech_max_share=0.9990,
tech_max_share=0.999,
fueltypes=fueltype_lookup),
'boilerB': read_data.TechnologyData(
fuel_type='electricity',
Expand All @@ -454,45 +440,26 @@ def test_get_sig_diffusion():
market_entry=1990,
tech_max_share=1.0,
fueltypes=fueltype_lookup)}
enduses = ['heating']
fuel_switches = [
read_data.FuelSwitch(
enduse='heating',
technology_install='boilerB',
switch_yr=2020,
enduse_fueltype_replace=tech_related.get_fueltype_int(fueltype_lookup, 'gas'),
fuel_share_switched_ey=1.0
)]

service_switches = []
tech_increased_service = ['boilerA']
service_tech_ey_p = {'boilerA': 0.6, 'boilerB': 0.4}
service_fueltype_p = {1: 1.0}

result, sig_param = s_generate_sigmoid.get_sig_diffusion_service(
sig_param = s_generate_sigmoid.get_l_values(
technologies,
tech_increased_service,
service_tech_ey_p)

assert result['boilerA'] == 0.6
assert result['boilerB'] == 0.4
assert sig_param['boilerA'] == 1.0

# -----

service_switches = [read_data.ServiceSwitch(
enduse='heating',
technology_install='boilerC',
service_share_ey=1.0,
switch_yr=2050)]

tech_increased_service = ['boilerC']
service_tech_ey_p = {'boilerC': 1.0, 'boilerA': 0.0, 'boilerB': 0.0}
service_tech_ey_p = {'boilerC': 0.5, 'boilerA': 0.0, 'boilerB': 0.0}

result, sig_param = s_generate_sigmoid.get_sig_diffusion_service(
sig_param = s_generate_sigmoid.get_l_values(
technologies,
tech_increased_service,
service_tech_ey_p)

#TODO: Possibly add more test

assert result['boilerC'] == 1.0
assert sig_param['boilerC'] == 0.999

0 comments on commit 8001029

Please sign in to comment.