Ejemplo n.º 1
0
    resource.commit()

    if resource.valid:
        resource.save('resources/' + resource.name + '.json')


dirpath = building.download_data(
    "https://zenodo.org/record/804244/files/Hydro_Inflow.zip",
    unzip_file="Hydro_Inflow/")

files = os.listdir(dirpath)

x = pd.DataFrame()

reservoir_elements = building.read_elements('reservoir.csv')

ror_elements = building.read_elements('run-of-river.csv')
ror_elements.reset_index(inplace=True)
ror_elements.set_index(ror_elements['bus'].str[:2], inplace=True)
ror_elements.index.name = 'iso-country-code'

_embed = lambda x: json.dumps({'summed_max': x})

for f in files:
    if any(c in f for c in config['countries']):
        df = pd.read_csv(os.path.join(dirpath, f))

        # select one year
        df = df.loc[df['Year'] == config['weather_year']]
Ejemplo n.º 2
0
demand_mapper = {'Demand (GWh)': 'demand'}

types = [
    'volatile-generator', 'dispatchable-generator', 'pumped-storage',
    'reservoir', 'run-of-river', 'demand'
]

mappers = dict(
    zip(types, [
        volatile_mapper, dispatchable_mapper, storage_mapper, reservoir_mapper,
        ror_mapper, demand_mapper
    ]))

element_dfs = dict(
    zip(types, [
        building.read_elements('volatile-generator.csv'),
        building.read_elements('dispatchable-generator.csv'),
        building.read_elements('pumped-storage.csv'),
        building.read_elements('reservoir.csv'),
        building.read_elements('run-of-river.csv'),
        building.read_elements('demand.csv')
    ]))

elements = dict(zip(types, [{}, {}, {}, {}, {}, {}]))

for country in df.index:
    for element_type, mapper in mappers.items():
        for tech_key, tech in mapper.items():
            element_name = tech + '-' + country

            if element_name in element_dfs[element_type].index:
        'Profiles for Run of River (ROR) components. The profile is assumed' +
        ' to be constant during the year.')
    resource.descriptor['title'] = 'ROR profiles'
    resource.descriptor['sources'] = [{'title': 'Assumption'}]
    resource.commit()

    if resource.valid:
        resource.save('resources/' + resource.name + '.json')


year = str(config['weather_year'])

countries = config['countries']

sequences_df = pd.DataFrame(index=building.timeindex())

elements = building.read_elements('run-of-river.csv')
for c in countries:
    # get sequence name from elements edge_parameters (include re-exp to also
    # check for 'elec' or similar)
    sequence_name = elements.at[
        elements.index[elements.index.str.contains(c)][0], 'profile']

    sequences_df[sequence_name] = 0.65

sequences_df.index = building.timeindex()

path = building.write_sequences('ror-profiles.csv', sequences_df)

create_resource(path)
Ejemplo n.º 4
0
    'wind_onshore', 'wind_offshore', 'pv_rooftop', 'ccgt', 'gt',
    'large_hydro_(ror)', 'biogas', 'biomass', 'battery', 'pumped_storage',
    'coal_ccs'
]


def annuity(capex, n, wacc):
    return capex * (wacc * (1 + wacc)**n) / ((1 + wacc)**n - 1)


df = pd.read_csv('archive/techno-economic-assumptions.csv', index_col=0)
df.drop('source (c,l,e)', axis=1, inplace=True)

types = config['sources']

element_dfs = {t: building.read_elements(t + '.csv') for t in types}

buses = config['buses']

data = dict(zip(types, [{}, {}, {}]))

df.index = df.index.str.replace(' ', '_')

for idx, row in df.iterrows():
    if idx in considered_techs:
        for b in buses:
            element_name = idx + '_' + b
            element = dict(row)

            # add tech specific data
            if row['type'] == 'dispatchable':
Ejemplo n.º 5
0
        "fields": "bus",
        "reference": {
            "resource": "bus",
            "fields": "name"
        }
    }]

    resource.commit()
    resource.descriptor

    if resource.valid:
        resource.save('resources/' + resource.name + '.json')


config = building.get_config()

buses = building.read_elements('bus.csv')
buses.index.name = 'bus'

elements = pd.DataFrame(buses.index)

elements['type'] = 'excess'
elements['name'] = 'excess-' + elements['bus'].str[:2]
elements['marginal_cost'] = 0

elements.set_index('name', inplace=True)

path = building.write_elements('excess.csv', elements)

create_resource(path)
suffix = '_load_old'

year = str(config['demand_year'])

countries = config['countries']

columns = [c + suffix for c in countries]

timeseries = raw_data[year][columns]

demand_total = timeseries.sum()

demand_profile = timeseries / demand_total

sequences_df = pd.DataFrame(index=demand_profile.index)
elements = building.read_elements('demand.csv')
for c in countries:
    # get sequence name from elements edge_parameters (include re-exp to also
    # check for 'elec' or similar)
    sequence_name = elements.at[
        elements.index[elements.index.str.contains(c)][0], 'profile']

    sequences_df[sequence_name] = demand_profile[c + suffix].values

sequences_df.index = building.timeindex()

path = building.write_sequences('demand-profiles.csv', sequences_df)

create_resource(path)