Next Article in Journal
Metal Contents and Pollution Indices Assessment of Surface Water, Soil, and Sediment from the Arieș River Basin Mining Area, Romania
Next Article in Special Issue
The Practical Impact of Price-Based Demand-Side Management for Occupants of an Office Building Connected to a Renewable Energy Microgrid
Previous Article in Journal
Does Sustainable Consumption Matter? The Influence of the COVID-19 Pandemic on Medication Use in Brasov, Romania
Previous Article in Special Issue
Capturing Changes in Residential Occupant Behavior Due to Work from Home in Japan as a Consequence of the COVID-19 Pandemic
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Demand Response Analysis Framework (DRAF): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems

1
Department of Process, Energy and Transport Engineering, Munster Technological University, T12 P928 Cork, Ireland
2
Institute of Refrigeration, Air-Conditioning, and Environmental Engineering, Karlsruhe University of Applied Sciences, Moltkestraße 30, 76133 Karlsruhe, Germany
*
Author to whom correspondence should be addressed.
Sustainability 2022, 14(13), 8025; https://doi.org/10.3390/su14138025
Submission received: 11 May 2022 / Revised: 3 June 2022 / Accepted: 22 June 2022 / Published: 30 June 2022

Abstract

:
A major barrier to investments in clean and future-proof energy technologies of local multi-energy systems (L-MESs) is the lack of knowledge about their impacts on profitability and carbon footprints due to their complex techno-economic interactions. To reduce this problem, decision support tools should integrate various forms of decarbonization measures. This paper proposes the Demand Response Analysis Framework (DRAF), a new open-source Python decision support tool that integrally optimizes the design and operation of energy technologies considering demand-side flexibility, electrification, and renewable energy sources. It quantifies decarbonization and cost reduction potential using multi-objective mixed-integer linear programming and provides decision-makers of L-MESs with optimal scenarios regarding costs, emissions, or Pareto efficiency. DRAF supports all steps of the energy system optimization process from time series analysis to interactive plotting and data export. It comes with several component templates that allow a quick start without limiting the modeling possibilities thanks to a generic model generator. Other key features are the access and preparation of time series, such as dynamic carbon emission factors or wholesale electricity prices; and the generation, handling, and parallel computing of scenarios. We demonstrate DRAF’s capabilities through three case studies on (1) the DR of industrial production processes, (2) the design optimization of battery and photovoltaic systems, and (3) the design optimization and DR of distributed thermal energy resources.

1. Introduction

Following the Paris Agreement 2015 [1] and the Glasgow Climate Pact 2021 [2] there is an urgent need for decarbonization worldwide. With the European Green Deal approved in 2020, the European Union (EU) aims to achieve carbon neutrality by 2050 [3]. Energy system modeling is essential to driving the rapid adoption of smart energy services and clean innovative technologies needed to decarbonize energy systems [4]. Powerful energy system modeling frameworks have been presented as proprietary and open-source software. Most open-source frameworks, though, were developed with large-scale energy systems in mind, and only a few focus on decision support for local multi-energy systems (L-MESs). However, significant adoption of clean technologies and demand response (DR) programs are required in individual L-MESs, as the success of the energy transition depends on decentralization. According to the International Energy Agency, 70% of clean energy investments over the next decade will have to be made by private developers, consumers, and financiers [5]. Industrial and commercial electricity consumers can contribute to the expansion of renewable energy sources (RES), e.g., through on-site photovoltaic systems. At the same time, they can help to integrate the RES through the smart use of flexible loads and energy storage through DR, which additionally offers cost-saving potential for companies. This demand-side flexibility is needed, as the flexibility demand of the electricity system is expected to quadruple by 2050, even though the availability of conventional flexibility sources will decrease due to the decommissioning of fossil power plants [6]. Therefore, in this paper, we focus on how cost and emission reductions that arise from applying DR to L-MESs, especially in the industrial and commercial sectors, can be quantified using the Demand Response Analysis Framework (DRAF).
Decarbonization of L-MESs are often considered by minimizing greenhouse gas emissions and costs within multi-objective modeling [7]. E.g., in [8], an efficient energy management model based on a multi-objective optimal power flow problem is proposed that considers flexibility of storage units of industrial networks. In [9], the contributions of energy storage systems, production buffer stocks, and smart transformers to a net zero energy factory were analyzed. Andiappan [10] reviewed mathematical optimization approaches for energy system synthesis and identified the concept of eco-industrial parks to be a future research direction.

1.1. Demand Response

Due to temporal variability, uncertainty, and location constraints, the integration of high shares of RES is demanding and requires high operational flexibility of the power system, which could lead to integration costs of RES [11]. In DR, final consumers provide demand-side flexibility to the electricity system by voluntarily changing their load profiles in reaction to price signals (price-based DR) or specific requests (incentive-based DR) [12]. It is widely acknowledged that DR is a key element of the transformation to a carbon-free energy system enabling cost-efficient integration of fluctuating RES [13]. Gils [14] identified a significant DR potential in Europe; the minimum aggregated hourly averages of load reduction and increase were 61 and 68 GW, respectively. For a general overview of demand response, the reader is referred to [15].

1.1.1. DR in the Industrial and Commercial Sector

In recent years, several research projects investigating the DR potentials in the industrial and commercial sectors have been funded at the European and national level. Examples on European level are: demand response in industrial production (DRIP) [16], demand response integration technologies (DRIvE) [17], using the flexibility potential in energy intensive industries to facilitate further grid integration of variable renewable energy sources (IndustRE) [18]. Examples on national level are: SynErgie [19], Pilot Project DSM Bavaria [20], refrigerated warehouses store energy for smart energy grid (FlexLast) [21]. Commercial and industrial enterprises have large DR potentials [22], which can be divided into cross-sectional technologies [23] and energy-intensive production processes [24]. However, in order to exploit the full environmental and economic DR potential in the industrial and commercial sectors, aspects such as dynamic pricing [25], sector coupling, onsite generation, and onsite energy storage need to be considered in an integral analysis. Due to this complexity, there is still a lack of knowledge about existing flexibility, which is a major barrier to participation in DR programs [26]. To address this complexity, mathematical optimization, which has already been long proven in the analysis of large international power systems, can be applied to distributed energy systems. However, data preparation, model formulation, scenario definition, and result presentation require relevant experience and expertise to which the decision-makers in the companies often do not have access.
The aim of this study was, therefore, to develop and demonstrate the DRAF, which automates these process steps as far as possible to make the methodology of mathematical optimization accessible to a broader user group. DRAF is meant to supply insights and decision support for academics in applied sciences, consulting engineers, and decision-makers in companies. Hence, it needs to be portable, easy-to-use, maintainable, editable, and extensible.

1.1.2. DR and Investments

The consideration of DR within optimal design planning generally results in higher capacities for assets and storage coupled to the electricity demand, since the associated lower average utilization rate is over-compensated for by the revenue or cost reductions from DR. Many analyses of DR potentials are limited to the potential of flexibility derived from existing assets. However, investment options that alter the existing flexibility, e.g., product storage extension for a flexible production process, or electrification measures, should also be considered when assessing the flexibility potential of L-MESs. E.g., Liu et al. [27] found synergistic effects when energy storage and DR of cooling, heating, and power were combined.

1.1.3. DR and Carbon Emissions

Electricity carbon emission factors (CEFs) can be categorized into grid-mix emission factors (XEFs) and marginal emission factors (MEFs). While XEFs are suitable for calculating carbon emission balances of energy consumption, MEFs are superior if the real carbon emission effects of a short-term demand change are to be approximated. Summerbell et al. [28] studied the cost and carbon reduction potentials of a cement plant through price-based DR using real-time prices (RTP). Although the carbon reduction potential was calculated from dynamic XEFs, they were not part of an objective function, so the carbon emissions could not be minimized. Baumgärtner et al. [29] calculated dynamic XEFs and MEFs for Germany and the year 2016 with an economic dispatch model and used them in the objective function of a multi-objective problem to design low-carbon L-MESs. They concluded that at the same costs, emissions can be reduced by 6% when using dynamic XEFs instead of annual XEFs and by up to 60% when using dynamic MEFs, which highlights the significance of using dynamic CEFs. In [30], optimization models considering DR have been reviewed. A lack of research on DR modeling for commercial and industrial consumers exists. Additionally, we strongly recommend the consideration of environmental effects by placing the carbon emissions in the objective function. In [31], dynamic XEFs and MEFs for 20 European countries were calculated, and a stylized price-based DR simulation was conducted. The results show that looking at national electricity systems, the effect of price-based DR on operational carbon emissions differs substantially from country to country and is dependent on the energy demand, generation mix, fuel costs, and carbon emission prices.

1.2. Energy System Optimization

1.2.1. Multi-Objective Mixed Integer Linear Programming

We focus on multi-objective optimization, which combines two or more individual objective functions, e.g., the minimization of costs and carbon emissions, to gain a set of Pareto-optimal solutions [32]. These solutions are the best possible compromises and can be visualized as Pareto points on a scatter chart to give the user the option to choose from them.
The two most popular types of optimization methods are metaheuristics and mathematical programming [33]. Both types are used to optimize the operation and design of complex energy systems. Simplified, one can say that metaheuristics offer advantages for black-box models or for non-convex problems. In contrast to metaheuristics, mathematical programming can guarantee the achievement of a global optimal solution if an explicit equation-based model exists. Among the mathematical programming methods, mixed-integer linear programming (MILP) has shown to be effective for a wide range of cognate analyses. For instance, Zhang and Grossmann [34] listed 42 works with mathematical optimization models for industrial DR, among which, 35 were formulated as MILP models. For most energy-related components, the system behavior is nonlinear. However, the literature largely approximates this system behavior via MILP models where binary variables are used within the piecewise linear approximations of nonlinear system dynamics [35]. Besides the approximation through formulating a MILP for a nonlinear system, there are further complexity reduction methods, such as time series aggregation, that can be applied to MILP models for energy system optimization [36].
In this work, we chose MILP, since the formulated optimization problems can be solved with global optimality within reasonable time frames. We assume that an explicit equation-based model exists and that all occurring non-linear phenomena can be approximately modeled as piecewise linear phenomena.

1.2.2. Open-Source

In the scientific context, the open-source idea is also becoming increasingly prevalent in the field of energy system analysis [37]. Publishing source code under an open-source license that is approved by the Open Source Initiative and listed under https://opensource.org/licenses (accessed on 29 June 2022) not only increases transparency and reproducibility, but also the quality of the software due to the increased incentive for collaboration [38]. In contrast to models intended for large geographic scales, models for potential analyses and planning of L-MESs are often created by consulting firms, where the release of source code is often not in line with current corporate practices [39]. As a consequence, tools for the analysis of L-MESs are less often published as open-source.

1.2.3. Other Energy System Frameworks/Models

In recent years, the scientific community has produced some comprehensive energy system modeling frameworks. In [40], 75 modeling tools were reviewed. A review of 24 energy system models and model generators was presented in [41]. Kriechbaum et al. [42] reviewed open-source modeling frameworks for grid-based multi-energy systems. A review on the concepts and validation models of multi-energy systems was conducted in [43]. Based on the reviews above, Table 1 presents a comparison between DRAF and other existing frameworks and model generators capable of building bottom-up models for operation and investment decision support of L-MESs. Note that the table contains some full-fledged frameworks, such as oemof, whose wide range of functions and aspects cannot be presented here.
A powerful and versatile framework is the open energy modeling framework (oemof) [55]. More specifically, oemof is an organizational framework that bundles software for energy (system) modeling, such as the model generator oemof-solph [56]. However, oemof-solph uses Pyomo for the model generation, which builds models slower than the Gurobi Python interface GurobiPy [57]. Metadata such as units, parameter descriptions, and parameter value sources are not handled by the framework. While oemof cosmos offers several packages for parameter preparation, such as the load curve generation package demandlib [58], the preparation of important data for the modeling of price-based DR in L-MESs, such as dynamic CEFs, is not included. Very recently, Langiu et al., proposed the framework for component-oriented modeling and optimization for nonlinear design and operation (COMANDO) [48]. It focuses on nonlinear optimization; however, parameter preprocessing, interactive plotting, and metadata handling are not included in the package. There are also efforts to exploit the speed of the relatively new Julia programming language within energy system modeling, e.g., next energy modeling system for optimization (NEMO) [59], which was informed by the open source energy modelling system (OSeMOSYS). However, Julia is still a young programming language that lacks the massive community support needed for our target group, namely, programming beginners [60].
Some frameworks can be used in a flexible manner for manifold analyses (temporal and geographic resolutions) due to their modular structure and the clear separation between program logic and data, such as oemof [50]. This generic approach offers crucial advantages for large-scale power system analyses in terms of transparency, reusability, and maintainability. However, in order for the software to be used as decision support in an L-MES, it must be adapted to the specific problem with the following additional steps:
  • Model adaptation to industry-specific conditions;
  • Research and processing of market data, such as dynamic CEFs (depending on the country, year, and temporal resolution) and cost functions;
  • Generation of weather-dependent energy-relevant time series, such as energy yield time series for photovoltaics (PVs) or thermal load profiles;
  • Preparation, analysis, and plausibility checking of project-specific data, such as electrical load profiles,
  • Model parameterization;
  • Adaptation of result output functions, such as plots and tables to the particular data structure.
Commercial tools, such as the first three in Table 1, have addressed this need and can speed up the modeling process by specializing in specific application areas. A corresponding open-source alternative that leverages the potentials of the open-source idea (see Section 1.2.2) is currently not available.

1.3. Contributions

The main contributions of this paper are the development and demonstration of DRAF, an easy-to-use open-source Python decision support framework for optimizing DR-related design and operation of L-MESs. DRAF uses multi-objective MILP optimization to enable the user to quantify the cost and carbon emission reduction potential of existing and future flexibility options of L-MESs. The target groups of DRAF are researchers in the energy field and decision-makers in the commercial and industrial sectors. The source code of DRAF can be found at https://github.com/DrafProject/draf [61] (accessed on 28 June 2022). A secondary contribution of this study is the concise review of the current state of the art in open-source energy optimization software for DR.
The remainder of this paper is organized as follows. First, the most important elements and components of DRAF are described in Section 2, while referring to the extensive appendix with screenshots (Appendix A) and component templates (Appendix B). Second, the application of DRAF to three different simplified real-world case studies is demonstrated in Section 3. This is followed by a discussion, conclusion, and future research in Section 4.

2. The Demand Response Analysis Framework (DRAF)

2.1. Overview

Figure 1 shows the main functional elements of DRAF. One can see that DRAF provides a toolbox for every step of typical energy system analysis and the optimization process of an L-MES decision maker. More specifically, DRAF is designed to answer the three questions illustrated in Figure 2.
The general architecture of DRAF is presented in Figure 3. A typical use case is described in the following. First, a user imports and analyzes time series data of, e.g., electricity and natural gas historically purchased by the analyzed L-MES operator using DemandAnalyzer. Informed by the findings of the analyses, the user then instantiates a CaseStudy object of the desired analysis year and the country/address/coordinates of the L-MES. Subsequently, a first reference scenario that includes a model is added to the case study using component templates and the model generator. While DataBase is used here to provide and describe default parameters, the TimeSeriesPrepper prepares relevant time series, such as the day-ahead market prices, dynamic CEFs, or PV profiles. Different scenarios are then added by duplicating the reference scenario and changing specific parameters. After the model is solved by an external MILP solver, the results are stored in the cenario object. Finally, all parameters and results can be visualized either for each scenario (ScenarioPlotter) or for all scenarios in the case study (CaseStudyPlotter). The interconnected classes and modules allow for a fluent, explorative analysis process using the dot operator. E.g., cs.scens returns an overview of all defined scenarios; cs.scens.sc2.res.P_PV_fi_T.plot() plots the feed-in PV power of the scenario sc2. DRAF handles metadata, i.e., parameters can be stored together with descriptions, units, and sources. This motivates the input of metadata which can be used in plotting and exporting, prevents misunderstandings, and helps to document the meaning of an optimization model.
There are other energy modeling frameworks that also consider flexible demand. However, they do not focus on the modeling of L-MESs, such as individual commercial or industrial DERs. Since they are very generic, they technically allow the modeling of individual industrial sites; however, this abstraction comes with the cost of higher computational complexity and increased familiarization time with the tool for the user. Additionally, they do not provide easy access to necessary market information, such as wholesale prices, dynamic emission factors, and technology investment costs. Versatility and portability are important aspects of DRAF. Both are ensured through a modular structure of DRAF that can be used as a generalized framework that can easily be adapted to specific applications.

2.2. Python as a High Level Programming Language

For the development of DRAF, the open-source, general-purpose programming language Python [62] 3.9 was chosen. A general-purpose programming language allows all steps of the analysis process from market data acquisition to data preparation, model building, scenario definition, and result visualization to be defined and reproducibly documented in a single environment. Since 2010, Python became the standard for new energy system models [41]. At the time of writing, Python is the most popular easy-to-use high-level programming language [63]. It has rich libraries for data handling and visualization (e.g., Pandas [64], Matplotlib [65], and Plotly [66]). The open-source optimization modeling language Pyomo [67] provides access to important MILP solvers, such as Gurobi [68]. However, most importantly, Python has a vibrant community that supplies help and solutions to almost any problem that might occur.

2.3. Time Series Analysis Tools

As can be seen in Figure 1, the Time Series Analysis Tools refer to a DRAF toolbox. The included tools, DemandAnalyzer and PeakLoadAnalyzer, are described in the following.

2.3.1. DemandAnalyzer

Often, DR analyses are based on a time series of historic energy demands, e.g., the electricity demand of the year before. Before starting the modeling process, an analysis of this time series is helpful to validate the correct time-series length and to get key metrics, such as the peak-to-average ratio, load percentiles, and usage patterns. DRAF provides such an analysis with DemandAnalyzer. Figure A1 shows a screenshot of an example time series analysis.

2.3.2. PeakLoadAnalyzer

Based on the DemandAnalyzer object, the PeakLoadAnalyzer can be used; see screenshot in Figure A2. It shows the peak loads above a user-defined threshold and the cost reduction potential that originates from a given peak load price.

2.4. Parameter Preparation Tools

The Parameter Preparation Tools is a toolbox (cf. Figure 1) that supports the preparation of parameters for the optimization model.

2.4.1. TimeSeriesPrepper

DRAF’s TimeSeriesPrepper allows the user to prepare time series such as the ambient air temperature; renewable electricity generation profiles; CEFs; and day-ahead market prices from basic input data, such as an address that converts to geographic coordinates, the analyzed year, and the time step width.

Carbon Emission Factors (CEFs) and Electricity Prices

In DRAF, CEFs and day-ahead prices for most European national electricity systems are automatically calculated for the given year and frequency with the open-source tool Elmada [69], as described in [31]. The latest Elmada version, v0.1.0 [70], supplies hourly and quarter-hourly time series for 30 European countries, mainly using data from the European Network of Transmission System Operators for Electricity (ENTSO-E) transparency platform [71]. For the CEFs, the user can choose between XEFs and MEFs, depending on the analysis question. For the electricity prices, the user can choose between day-ahead spot market prices which are referred to as RTP, time-of-use (TOU) pricing, and a flat price. In TOU, if not stated otherwise, time steps are grouped into high price and low price times; high price times apply between 8 a.m. to 8 p.m. during workdays. The high/low price is defined by the mean of RTP during high/low price times, respectively. The flat price is the annual mean of the RTPs.

Photovoltaic Power Profiles

If the user does not provide PV profiles for the analyzed location, DRAF uses the Global Solar Energy Estimator (GSEE) [72] to generate PV profiles from the geographic coordinates (or a valid address), global and diffuse radiation, and ambient temperature time series. For Germany only, DRAF checks for available weather data from the nearest weather station from [73] and downloads it in the background. This functionality may be extended to other countries as data become available.

Electrical and Thermal Load Profiles

The TimeSeriesPrepper module of DRAF also provides functions to create electrical and thermal load time series. In the electrical case, standard load profiles from [74] are used while considering public holidays from the given region with the Python holidays package [75]. For thermal load profiles, ambient temperature data from [73] are used to approximate heating and cooling demand time series.

2.4.2. DataBase

The reasoning behind the DataBase is to pragmatically provide the user with an expandable library of technical and market-related parameters, together with metadata such as units, descriptions, and scientific sources. Some of the values are used in the component template definitions in Appendix B.

2.5. Component-Based Model Generator

To avoid code repetition, and to make DRAF and the code written by the user maintainable, extensible, and adaptable, the toolbox Model Generator (cf. Figure 1) is implemented that creates model constructs in a lazy fashion; see Algorithm 1. Furthermore, the model generator keeps the model as light as possible, creating only the dimensions, parameters, optimization variables, and constraints that are needed. This allows the provision of adaptable and extensible component templates without limiting the user’s freedom to build any other MILP model.
A component class consists of the two functions that define the component, param_func and model_func. The param_func defines dimensions, parameters, variables, and collectors for a given scenario. The model_func later uses these objects to build constraints and to connect the component to other components by contributing linear expressions to their collectors. The listings in Figure 4 show examples of these functions. The first listing defines a simple PV component. Note that dimensions and collectors are not needed for this simple PV component. The second listing shows relevant parts of the Main component, which defines general relationships that do not originate from a specific technical component.
For adding constraints and objective functions, the user can choose between Pyomo and GurobiPy syntax. While Pyomo supports different solvers, GurobiPy is limited to the commercial solver Gurobi but builds models with less computational effort.
Component interdependencies are considered using so-called collectors, which collect linear expressions across components and aggregate them in another component. For example, the collectors for investment costs are defined in the Main component with sc.collector("C_inv_"); then, the components PV and fuel cell (FC) contribute to it with c.C_inv_["PV"] = … and c.C_inv_["FC"] = …. Finally, the Main component uses the collector to aggregate the investment costs with sum(c.C_inv_.values()). Collectors can collect scalar values, e.g, to aggregate investment costs of different components to total costs, or collect functions to access multi-dimensional vectors, e.g., to build an electricity balance for each time step; see Figure 5. If a component uses a collector, the constraints of that component must be built after the constraints of all components that contribute to that collector. This dependency restricts the order of submodel creation, which is resolved by executing a topological sort. This makes components reusable, so the user can conveniently choose from different storage and conversion technology components and modeling options, such as the consideration of investments or minimal part-load behavior, without inflating the model with overhead constructs. The user defines optimization models by using component templates (see Appendix B) and/or self-written technology components.
 Algorithm 1: Model generation.
Sustainability 14 08025 i001

2.6. Component Templates

DRAF provides a set of component templates so that users do not need to start from scratch. The model is assembled from the Main component and multiple technology components. The Main component includes the objective function and all general sets, parameters, variables, and balances. Technology components are, e.g., energy demands, conversion and storage technologies, and interfaces to external entities, such as the electricity grid.

2.6.1. The Component Template Main

The Main component is a special component template that consists of the definition of the objective function and general balances and constraints. The Main component yields a deterministic multi-objective combined design and operation problem, which is described in the following. The formulation is partly based on previous work [76,77]. By default, DRAF works with equidistant time steps and assumes perfect foresight. The temporal resolution is defined by the user and not restricted; however, hourly or quarter-hourly resolution is required if the functionality of the TimeSeriesPrepper module is used; see Section 2.4.1. The default modeling horizon is one year, but can be customized. General sets are discrete time steps t T : = { t 1 , , t | T | } , components j J : = { eDem , EG , PV , BES , } , and flow types i I : = { electricity ,   heat   1 ,   heat   2 ,   cool   1 ,   cool   2 ,   product   1 , } . In the following, optimization variables are denoted with bold symbols and are non-negative continuous variables unless stated differently.
The objective function of the MILP is to minimize the weighted sum of the total annualized cost (TAC) C tot and the annual carbon emissions CE tot :
minimize Z : = ( 1 α ) π C C tot + α π CE CE tot + j X j penalty
where α is the Pareto weighting factor [ 0 . . 1 ] and π C , π CE are the Pareto normalization factors which can be identified by a simple algorithm to enable a more even distribution of the Pareto points; cf. Figure 14. X j penalty is a general penalty term which is only used in rare cases when there is an incentive that is not related to costs or emissions, e.g., to model uncontrolled battery electric vehicle (BEV) charging (in Appendix B.6), where the incentive is to charge based on time constraints.
The annualized total costs C tot are the sums of the annual operating costs, the annualized investment costs, and the maintenance costs of all components j J :
C tot = j C j op operation costs + j C j invAnn annualized investment costs + j C j rmi maintenance costs C tot R , C j op R | J |
The total carbon emissions CE tot are the sums of yearly operating carbon emissions of all components j J :
CE tot = j CE j CE tot R , CE j R | J |
Time-step average flow values, such as electrical power, the thermal energy flow of a specific temperature level, or a product flow, are generically denoted with Φ i , j , t . Balances are defined by equating the sum of all input flows Φ i , j , t source with the sum of all output flows Φ i , j , t sink , for all flow types i I :
j Φ i , j , t source = j Φ i , j , t sink t T , i I

2.6.2. Technology Component Templates

Appendix B contains the mathematical formulation of all component templates. Note that besides conversion and storage technologies, demands, and market interfaces of commodities, such as electricity (Appendix B.1) or fuels (Appendix B.2), are also individual component templates.
Most of the collectors exist within the Main component templates, and a few in others; e.g., in the EG component (Appendix B.1):
P t eg , sell = j P t , j sell
or in the Fuel component (Appendix B.2):
F f fuel = j F f , j f F
The total annualized investment costs C j invAnn and the maintenance costs C j rmi are usually defined within storage and conversion components:
C j invAnn = k j , af ( r , N j ) c j , inv P j , capn
C j rmi = k j , rmi c j , inv P j , capn
where j stands for the component j, c j , inv are the specific investment costs, and P j , capn the new capacities. k j af ( r , N j ) are the component-specific annuity factors defined in Equation (9) following, e.g., [78], where r is the calculated interest rate and N j is the operation life in years for component j.
k j af ( r , N j ) = r ( 1 + r ) N j ( 1 + r ) N j 1
For the component templates, additional sets are defined: Fuel types f F : = { biogas , naturalgas } , condensing temperature levels c C : = { 1 , , | C | } , heating temperature levels h H : = { 1 , , | H | } , cooling temperature levels n N : = { 1 , , | N | } , and thermal demand temperature levels l L : = H N .

2.7. Scenario Generation and Optimization

The scenario generator in DRAF provides convenient scenario generation. Scenarios can either be created manually or created in batches. For manual scenario creation, an existing object is cloned with sc = cs.addscen(basedon=<scenid>), whose parameters can be subsequently updated with sc.updateparams(param1=value1, param2=value2, …); see also Algorithm 1. The batch scenario creation using cs.addscens() can be seen as sensitivity analysis, which automatically creates a scenario for each combination of given parameters and parameter values. This is useful, e.g., for optimizing the system for different energy and carbon emission prices. When solving optimization models for a case study, the user can choose to solve the scenarios in parallel (cs.optimize(parallel=True)) using the distributed execution framework Ray [79] or serially to rely on the parallelization of the solver.

2.8. Visualization

DRAF provides a rich interactive visualization toolbox built into the CaseStudy and Scenario classes (cf. Figure 1). The dot notation allows convenient plotting since the data and metadata are internally fetched. E.g., after optimizing multiple scenarios, cs.plot.pareto() plots the Pareto front of all scenarios in the case study, similarly to Figure 14, and cs.scens.sc3.plot.sankey() plots the Sankey diagram of scenario sc3; see Figure A4. Interactive parameter and result exploration are available thanks to the diverse capabilities of Ipython [80] and Plotly [66]; see also Figure A5.

3. Case Studies

In the following, DRAF’s features are demonstrated in three case studies that we consider to be of interest to the reader. The case studies are based on real companies in southern Germany with modified values for data protection reasons. In Case Study 1, the production schedule of a cement plant is optimized considering price-based DR. This case study was selected as it illustrates DRAF’s support for flexible industrial production processes. In Case Study 2, the design of a battery energy storage (BES) and a PV system at an industrial site is optimized considering multiple flexibility applications and differentiating between existing and new technologies. Case Study 3 covers a more sophisticated superstructure for a greenfield L-MES. This last case study demonstrates multi-objective optimization, the value of the scenario generator, and the consideration of multiple temperature levels. The code for the presented case studies is available at https://github.com/DrafProject/draf_demo_case_studies (accessed on 28 June 2022). The calculations were performed using DRAF v.0.2.0 [61].

3.1. Case Study 1: Price-Based DR Potential of an Industrial Production Process

In the first case study, which is based on the previous work [81,82], we apply DRAF to the problem of quantifying the cost and carbon emission reduction potential of price-based DR of a cement milling process.
The setup of the case study is shown in Figure 6. In it, there are two electric cement mills that turn cement clinker into three different cement sorts which are stored in separate silos to serve a given cement demand. For each time step, the cement mills can either be powered down or produce one compatible cement sort in full-load with a sort and machine-specific production efficiency; see Figure 7 left. Machine 1 is compatible with sorts 1 and 3, and machine 2 is compatible with sorts 2 and 3; see Figure 6. The cement clinker supply is not a bottleneck in the production process, so it was modeled as unrestricted. The cement demand was generated by breaking down the total monthly demand into the working hours of the plant; see Figure 7 right. A MILP model was built using DRAF’s component-templates Main, EG, pDEM, PP, and PS (see Appendix B.1, Appendix B.12, Appendix B.13, Appendix B.14) to minimize the TAC C tot of the system for 8760 hourly time steps from the year 2019. Therein, cement mills are represented by machines, cement clinker by raw material, and cement silos by product storage. Dynamic TOU and RTP pricing schemes and XEFs were prepared by DRAF’s TimeSeriesPrepper, described in Section 2.4.1. The peak power price was €50 kW p 1 . A standard load profile for continuous production was scaled to the annual energy of 5 GWh and used as fixed electricity demand. The cement mills have nominal capacities of 3.5 MW each and a minimum part-load factor of 1. Each machine start-up and sort-change costs €10.00 due to the inefficient operation associated with it. Cement mill 1 was unavailable due to revisions from the 15th to 16th of March, and the cement mill 2 from the 15th to 16th of February. Each cement silo had a capacity and initial filling of 5 kt and a minimum filling level of 1 kt. Since part-load operation was not possible, the deviation between the last and the initial filling level was evaluated with a factor k and penalized via the operating costs. k was composed of the worst efficiency and three times the average electricity price of the year. Thus, the deviation was minimized without introducing infeasibility. For brevity, investment in storage extension was not allowed, even though this would be possible with the model and would be an interesting analysis.
Despite the technical constraints and the small price spreads of 2019 the load shifting led to savings of €149,000, (1.9% of electricity costs) and 1.4 kt C O 2 e q (9.2% of operating carbon emissions) per year. However, these are theoretical values, as complete foresight was assumed. The results for ten of the 365 optimized days are shown in Figure 8. The plots show that while the silo filling levels look similar, the scheduling of the cement sorts between the two scenarios differs substantially on an hourly basis. The electricity price is the main factor in the production decision. Exceptions are due to sort-switching and start-up costs. The Pearson correlation coefficient r between the electricity price and the purchased electricity for the whole year is −0.29 with a TOU pricing scheme and −0.58 with RTP; see Figure 9. Since machine 1 is more efficient than machine 2, the most energy-intensive sort 1 is only produced on machine 1. Sort 1 is only produced on machine 1 and sort 2 only on machine 2. The electrical peak demand was not lowered.

3.2. Case Study 2: Design Optimization of a Multi-Use BES and PV System

Figure 10 shows the setup and problem of Case Study 2.
For the inflexible electricity demand, anonymized real industrial data of the year 2020 were used, which are analyzed in Figure A1. Further input parameters were dynamic day-ahead market prices plus €62.3 MWh 1 electricity taxes and levies and €100 kW 1 peak electricity price. Specific investment cost forecasts for 2022 for PV and BES were taken from [83] with the values €384 kW p 1 and €209 kWh 1 , respectively.
Four scenarios were modeled: REF (reference scenario), optBES (allows BES), optPV (allows new PV), and optBesPv (allows both). Table 2 and Table 3 and Figure A3 show the results of Case Study 2. Figure 11 shows the resulting electricity balance and the RTP of scenario optBesPv for one exemplary week (Monday–Sunday).

3.3. Case Study 3: Multi-Objective Design and Operational Optimization of Thermal-Electric Sector Coupling

The third case study demonstrates the optimization of the design and operation of a more sophisticated industrial L-MES. This time it is a greenfield project—i.e., there are no existing technologies. Besides the inflexible electricity demand, the L-MES incorporates cooling and heating demands at different temperature levels. Figure 12 shows an overview and the superstructure of the analyzed L-MES. Up to 20 MWh/h of electricity can be bought from and sold to the grid with hourly prices and XEFs. Assuming plant-wide optimization with perfect foresight of XEFs, electricity prices, and PV yield profiles, Pareto-optimal design and operational configurations were to be identified that fulfilled the thermal and electrical energy demands. The following component templates from Appendix B were used: cDem, hDem, eDem, EG, Fuel, PV, BES, CHP, HOB, HP, P2H, H2H1, TES, and Main. The scheme in Figure 13 provides details on the modeling of the different temperature levels.
We modeled seven scenarios: The reference scenario REF and the six scenarios sc2–sc7. REF only allows heat-only-boilers (HOBs) and cooling machines that are modeled using the HP component by allowing only heat transfers from the cooling demands to the ambient temperature.
Scenarios sc2 to sc7 allow all technologies of the superstructure and all HP operating modes. They differ from each other only by the Pareto weighting factor α . The α values for the scenarios sc2 to sc7 were 0, 0.2, 0.4, 0.6, 0.8, and 1, respectively; i.e., sc2 optimized TAC ( α = 0 ), scenarios sc3 to sc6 optimized Pareto efficiency ( 0 < α < 1 ), and sc7 optimized carbon emissions ( α = 1 ).
Figure 14 shows the TAC and annual carbon emissions of the resulting scenarios; and Figure 15 shows the resulting capacities, cost types, and distribution of the electricity exchange with the electricity grid. Due to the multi-objective optimization, scenarios sc3 to sc7 are Pareto-efficient—i.e., one objective value cannot be decreased without increasing the other. One can see that with increasing α values, i.e., increasing the focus on carbon emissions within the objective function, the investment cost and the annualized investment cost increase too. Compared to REF, sc2 and sc3 have lower TACs than REF by 36% and 9%, respectively, since higher annualized investment and maintenance costs are overcompensated by savings in operating costs. Additionally, sc2 and sc3 can reduce carbon emissions by 49% and 66%, respectively, compared to REF. Comparing sc2 and sc3 to REF produces no conflict of objectives, since REF is not on the Pareto frontier. The scenarios sc4 to sc7 have no economic advantage over REF; however, they do have an environmental advantage over REF. Scenarios sc3 and sc5 can be regarded as good trade-offs when looking at all available Pareto-efficient solutions. Scenario sc7 represents the highest possible carbon emission savings with 87%; however, the TACs are 41 times higher than in REF. Since in sc7 TACs are not considered, capacities were set to the highest possible values that are in place for each technology, e.g., 1 GWh for BES and 100 MWh for each TES. This is an unrealistic behavior that could be avoided by considering scope 3 emissions, which include the carbon emissions of the production of the energy technologies that are analogous to the annualized investment costs within the calculation of TACs. However, it demonstrates how scope 1 and scope 2 emissions can be reduced by increasing the system flexibility. As can be seen in Figure 15 bottom, in sc7 the technical upper limit of 20 MW of electrical power drawn from the grid is exploited during hours of low CEFs, which would stabilize the grid when there is a surplus of renewable energy. Screenshots of Sankey diagrams for REF and sc3 are shown in Figure A4.

4. Conclusions

We developed, described, and demonstrated DRAF, an open-source multi-objective decision support tool for L-MESs. By providing vital information about the environmental and economical potential of innovative energy technologies and services, DRAF lowers investment barriers of L-MES decision-makers. It considers load flexibility, energy efficiency, electrification, and their interdependencies in an integrated model without neglecting critical aspects, such as multiple temperature levels or DR of production processes. DRAF considers flexible electricity sources and sinks across the whole energy conversion chain of an L-MES, such as an industrial site. While providing useful pre-configured components that allow complex DR analyses with just a few lines of code, the tool setup does not restrict the users’ freedom to build any possible MILP model. DRAF is needed since the existing software for potential identification of multi-energy systems is either (a) too generic to be practicably applied to L-MESs, (b) leaves out essential aspects such as temperature levels or the access to dynamic emission factors, or (c) is not open-source.
Three case studies demonstrate how different settings and applications can be modeled within DRAF. Case Study 1 shows how price-based DR of a production process can reduce costs and operating carbon emissions. Case Study 2 demonstrates a simple design and operational optimization problem for a PV and multi-use BES system. The more sophisticated design optimization of Case Study 3 demonstrates the consideration of multiple temperature levels, the selection of heat sources and sinks for the HP, and the results of a multi-objective Pareto analysis to select the optimal trade-off between economic considerations and the reduction of carbon emissions.
This paper shows only a small sample of the possibilities of DRAF. Future work is, therefore, the application of the framework for a detailed analysis and optimization of a real L-MES, such as an industrial company. The implementation of myopic and stochastic modeling in a rolling horizon fashion, tools for scenario generation and reduction, and the selection of typical days are also future work.

Author Contributions

Conceptualization, M.F. and M.D.M.; methodology, M.F., M.B. (Markus Bohlayer) and M.D.M.; software, M.F.; investigation, M.F.; data curation, M.F.; writing—original draft preparation, M.F.; writing—review and editing, M.B. (Markus Bohlayer), M.B. (Marco Braun) and M.D.M.; visualization, M.F.; supervision, M.D.M.; project administration, M.B. (Marco Braun) and M.D.M.; funding acquisition, M.B. (Marco Braun) and M.D.M. All authors have read and agreed to the published version of the manuscript.

Funding

This research was performed as part of the MeSSO Research Group at the Munster Technological University (MTU) and in relation to the project WIN4climate as part of the National Climate Initiative financed by the Federal Ministry for Economic Affairs and Climate Action (BMWK) on the basis of a decision by the German Bundestag (number 03KF0094A). It was additionally funded by the MTU Risam scholarship scheme.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

Not applicable.

Conflicts of Interest

The authors declare no conflict of interest.

Nomenclature

For a description of component-related symbols including units, please see description tables in Appendix B.
Acronyms
CEFCarbon emission factor
COPCoefficient of performance
DRDemand response
DRAFDemand response analysis framework
HPElectric heat pump
L-MESLocal multi-energy system
MEFMarginal emission factor
MILPMixed-integer linear programming
PBDRPrice-based demand response
RESRenewable energy sources
RTPReal-time prices
TACTotal annualized cost
TOUTime of use
XEFGrid mix emission factor
Component Labels
besBattery energy storage
bevBattery electric vehicle
cdemCooling demand
chpCombined heat and power
edemElectricity demand
egElectricity grid
fuelFuels
h2hHeat downgrading
hdemHeat demand
hobHeat-only boiler
hpElectric heat pumps
p2hPower-to-heat
ppProduction process
psProduct storage
pvPhotovoltaic system
tesThermal energy storage
Symbols
AArea
CCosts
cSpecific costs
CECarbon emissions
ceSpecific carbon emissions
copCoefficient of performance
G ˙ Product flow
Δ t Time step
Q ˙ Heat flow
EElectrical energy
η Efficiency
FFuel flow
GProduct
kA ratio
nA natural number
NOperation life
PElectrical power
QThermal energy
TTemperature
yBinary indicator
Superscripts
capnNew capacity
capxExisting capacity
condCondensation
evaEvaporation
fiFeed-in
minplMinimal part load
ocOwn consumption
rmiRepair, maintenance, and inspection
Indices and Sets
c C Condensation temperature levels
f F Fuel types
h H Heating temperature levels
i I Flow types
j J Technology components
l L Thermal demand temperature levels
n N Cooling temperature levels
t T Time steps

Appendix A. Screenshots of DRAF Output

Appendix A.1. DemandAnalyzer

Figure A1. Demonstration of DemandAnalyzer.
Figure A1. Demonstration of DemandAnalyzer.
Sustainability 14 08025 g0a1

Appendix A.2. PeakLoadAnalyzer

Figure A2. Demonstration of PeakLoadAnalyzer.
Figure A2. Demonstration of PeakLoadAnalyzer.
Sustainability 14 08025 g0a2

Appendix A.3. Result Visualization

Figure A3. Screenshot of draf with overview of results of Case Study 2.
Figure A3. Screenshot of draf with overview of results of Case Study 2.
Sustainability 14 08025 g0a3
Figure A4. Screenshots of interactive Sankey diagrams. Data: Results of scenarios REF (top) and sc3 (bottom) of Case Study 3.
Figure A4. Screenshots of interactive Sankey diagrams. Data: Results of scenarios REF (top) and sc3 (bottom) of Case Study 3.
Sustainability 14 08025 g0a4
Figure A5. Screenshot of interactive heat map plotting of Case Study 3.
Figure A5. Screenshot of interactive heat map plotting of Case Study 3.
Sustainability 14 08025 g0a5
Figure A6. Output of cs.scens.sc3.plot.collectors(filteretype="C") of Case Study 3.
Figure A6. Output of cs.scens.sc3.plot.collectors(filteretype="C") of Case Study 3.
Sustainability 14 08025 g0a6

Appendix B. Component Templates Definitions

This section presents the mathematical formuation of component templates which can be classified as storages, conversion technologies, demands, interfaces, and a combination of them. For each technology, it contains an entity description table, the constraints, and the registrations to collectors. In the entity description table, all entities (parameters and variables) are listed with a source, unit, description, and default value(s) in the case of a scalar parameter. Thanks to consistent usage of naming conventions, the tables could programmatically be generated from the DRAF components, which also ensures consistency between the software and the paper. Furthermore, it demonstrates DRAF’s possibilities in handling metadata such as units, data source information, and docstrings.
General parameters are: Δ t is the width of the according time step in hours.
Figure A7. Relationship between time steps and time points.
Figure A7. Relationship between time steps and time points.
Sustainability 14 08025 g0a7

Appendix B.1. Electricity Grid (EG)

SymbolDefaultSrcUnitDescription
ce t eg - kgCO2eq/kWhelCarbon emission factors (via elmada using year, freq, country, and CEF-method)
c eg , addon 0.131 €/kWhelElectricity taxes and levies
c eg , buypeak 50.000 €/kWel/aPeak price
c t eg , flat - €/kWhelFlat-electricity tariff (calculated from Real-time-price)
c t eg , rtp - €/kWhelDay-ahead-market-prices (via elmada using year, freq, and country)
c t eg , tou - €/kWhelTime-Of-Use-tariff (calculated from Real-time-price)
c t eg - €/kWhelChosen electricity tariff
P eg , buypeak - kWelPeak electrical power
P t eg , buy - kWelPurchased electrical power
P t eg , sell - kWelSelling electrical power
P eg , buypeak P t eg , buy
P t eg , sell = j Φ i = elSell , j , t source
Φ i = el , j = eg , t source = P t eg , buy
Φ i = el , j = eg , t sink = P t eg , sell
C j = eg op = 10 3 t Δ t P t eg , buy ( c t eg + c eg , addon ) P t eg , sell c t eg
C j = egPeak op = 10 3 P eg , buypeak c eg , buypeak
CE j = eg = t Δ t ( P t eg , buy P t eg , sell ) ce t eg

Appendix B.2. Fuels (Fuel)

SymbolDefaultSrcUnitDescription
F f fuel - kWTotal fuel consumption
F f fuel = j F f , j
C j = fuel op = 10 3 f F f fuel c f fuel
CE j = fuel = f F f fuel ce f fuel
C j = fuelTax op = 10 3 CE j = fuel c fuelTax

Appendix B.3. Battery Energy Storage (BES)

SymbolDefaultSrcUnitDescription
E bes , capx 0.000 kWhelExisting capacity
N bes 20.000[84]aOperation life
η bes , ch 97.468[85]%Charging efficiency
η bes , dis 97.468[85]%Discharging efficiency
η bes , time 99.998[86]%/hEfficiency due to self-discharge rate
c bes , inv 720.000[87]€/kWhelCAPEX
k bes , ini 0.000 %Initial and final energy filling share
k bes , inpercap 70.000[88]%Maximum charging power per capacity
k bes , outpercap 70.000[88]%Maximum discharging power per capacity
k bes , rmi 2.000[84]%Repair, maintenance, and inspection per year and investment cost
E bes , capn - kWhelNew capacity
E t bes - kWhelElectricity stored
P t bes , in - kWelCharging power
P t bes , out - kWelDischarging power
E t bes = η bes , time k bes , ini ( E bes , capx + E bes , capn ) if t = t 0 E t 1 bes otherwise d + Δ t ( η bes , ch P t bes , in 1 η bes , dis P t bes , out )
E t bes E bes , capx + E bes , capn
P t bes , out k bes , outpercap ( E bes , capx + E bes , capn )
P t bes , in k bes , inpercap ( E bes , capx + E bes , capn )
E t | T | bes = k bes , ini ( E bes , capx + E bes , capn )
Φ i = el , j = bes , t source = P t bes , out
Φ i = el , j = bes , t sink = P t bes , in
C j = bes invAnn = 10 3 E bes , capn c bes , inv k af ( r , N bes )
C j = bes rmi = 10 3 E bes , capn c bes , inv k bes , rmi
Battery degradation is not considered. Please see [89] for more details regarding battery degradation in DR scenarios. A feed-in from the BES is not allowed. Following [90], η bes , ch and η bes , dis are calculated as the square root of the cycle efficiency, assuming them to be symmetrical.

Appendix B.4. Thermal Energy Storage (TES)

SymbolDefaultSrcUnitDescription
N tes 30.000[78]aOperation life
Q l tes , capx - kWhthExisting capacity
η tes , time 99.500 %Storing efficiency
c tes , inv 28.709[91]€/kWthCAPEX
k l tes , ini - %Initial and final energy level share
k tes , inpercap 50.000 %Ratio loading power/capacity
k tes , outpercap 50.000 %Ratio loading power/capacity
k tes , rmi 0.100[91]%Repair, maintenance, and inspection per year and investment cost
Q l tes , capn - kWhthNew capacity
Q t , l tes - kWhthStored heat
Q ˙ t , l tes , in - kWthStorage input heat flow
Q t , l tes = η tes , time k l tes , ini ( Q l tes , capx + Q l tes , capn ) if t = t 0 Q t 1 , l tes otherwise + Δ t ( η tes , cycle Q ˙ t , l tes , in Q ˙ t , l tes , out )
Q t , l tes Q l tes , capx + Q l tes , capn
Q ˙ t , l tes , in k tes , inpercap ( Q l tes , capx + Q l tes , capn )
Q ˙ t , l tes , out k tes , outpercap ( Q l tes , capx + Q l tes , capn )
Q t , l tes = k l tes , ini ( Q l tes , capx + Q l tes , capn ) t { t 1 , t | T | }
Q ˙ t , l tes , in R | T | × | L |
Φ i , j = tes , t source = Q ˙ t , l tes , out i , l L
Φ i , j = tes , t sink = Q ˙ t , l tes , in i , l L
C j = tes invAnn = 10 3 l Q l tes , capn c tes , inv k af ( r , N tes )
C j = tes rmi = 10 3 l Q l tes , capn c tes , inv k tes , rmi

Appendix B.5. Photovoltaic System (PV)

SymbolDefaultSrcUnitDescription
A pv , avail 100.000 m2Area available for new PV
A pv , perpeak 6.500 m2/kWpeakArea efficiency of new PV
N pv 25.000[92]aOperation life
P pv , capx 0.000 kWpeakExisting capacity
P t pv , profile -[72]kWel/kWpeakProduced PV-power for 1 kWpeak
c pv , inv 460.000[83]€/kWpeakCAPEX
c pv , oc 0.028[93]€/kWhelRenewable Energy Law (EEG) levy on own consumption
k pv , rmi 2.000[92]%Repair, maintenance, and inspection per year and investment cost
P pv , capn - kWpeakNew capacity
P t pv , fi - kWelFeed-in
P t pv , oc - kWelOwn consumption
( P pv , capx + P pv , capn ) P t pv , profile = P t pv , fi + P t pv , oc
P pv , capn A pv , avail A pv , perpeak
Φ i = el , j , t source = P t pv , oc
P t , j = pv , t sell = P t pv , fi
C j = pv op = 10 3 c pv , oc t Δ t P t pv , oc
C j = pv invAnn = 10 3 P pv , capn c pv , inv k af ( r , N pv )
C j = pv rmi = 10 3 P pv , capn c pv , inv k pv , rmi

Appendix B.6. Battery Electric Vehicle (BEV)

SymbolDefaultSrcUnitDescription
E b bev , cap 1 bat - kWhelCapacity of one battery
E b bev , capx - kWhelCapacity of all batteries
P t , b bev , drive - kWelPower use
η bev , ch 97.468[85]%Charging efficiency
η bev , dis 97.468[85]%Discharging efficiency
η bev , time 100.000 %Storing efficiency. Must be 1.0 for the uncontrolled charging in REF
k b bev , empty - %Minimum state of charge
k b bev , full - %Maximum state of charge
k b bev , ini - %Initial and final state of charge
k b bev , inpercap -[88]%Maximum charging power per capacity
k b bev , v 2 xpercap -[88]%Maximum v2x discharging power per capacity
n b bev , nbats - -Number of batteries
y t , b bev , avail - -If BEV is available for charging at time step
z bev , smart 0.000 -If smart charging is allowed
z bev , v 2 x 0.000 -If vehicle-to-X is allowed
E t , b bev - kWhelElectricity stored in BEV battery
P t , b bev , in - kWelCharging power
P t , b bev , v 2 x - kWelDischarging power for vehicle-to-X
X bev , penalty - -Penalty to ensure uncontrolled charging in REF
E t , b bev = η bev , time k b bev , ini E b bev , capx if t = t 0 E t 1 , b bev otherwise + Δ t ( η bev , ch P t , b bev , in 1 η bev , dis ( P t , b bev , drive + P t , b bev , v 2 x ) )
E t , b bev k b bev , full E b bev , capx
E t , b bev k b bev , empty E b bev , capx
E b bev , capx = n b bev , nbats E b bev , cap 1 bat
P t , b bev , in y t , b bev , avail k b bev , inpercap E b bev , capx
P t , b bev , v 2 x z bev , v 2 x y t , b bev , avail k b bev , v 2 xpercap E b bev , capx
E t | T | , b bev = k b bev , ini E b bev , capx
X bev , penalty = ( 1 z bev , smart ) t , b t P t , b bev , in
X j = bev penalty = X bev , penalty
Φ i = el , j = bev , t source = b P t , b bev , v 2 x
Φ i = el , j = bev , t sink = b P t , b bev , in

Appendix B.7. Combined Heat and Power (CHP)

SymbolDefaultSrcUnitDescription
N chp 25.000[94]aOperation life
P chp , capx 0.000 kWelExisting capacity
P chp , max 100,000.000 kWelBig-M number (upper bound for CAPn + CAPx)
η chp , el 40.000[95]%Electric efficiency
η chp , th 45.000[95]%Thermal efficiency
c chp , inv 589.458[96]€/kWelCAPEX
c chp , oc 0.028[93]€/kWhelRenewable Energy Law (EEG) levy on own consumption
k chp , minpl 50.000 %Minimal allowed part load
k chp , rmi 18.000[94]%Repair, maintenance, and inspection per year and investment cost
F t , f chp - kWConsumed fuel flow
P chp , capn - kWelNew capacity
P t chp , fi - kWelFeed-in
P t chp , oc - kWelOwn consumption
P t chp - kWelProducing power
Y t chp - -Binary: If in operation
Q ˙ t chp - kWthProducing heat flow
P t chp = η chp , el f F t , f chp
Q ˙ t chp = η chp , th f F t , f chp
P t chp P chp , capx + P chp , capn
P t chp = P t chp , fi + P t chp , oc
P t chp Y t chp P chp , max
P t chp k chp , minpl ( P chp , capx + P chp , capn ) P chp , max ( 1 Y t chp )
Y t chp { 0 , 1 }
Φ i = heat 2 , j = chp , t source = Q ˙ t chp
Φ i = el , j = chp , t source = P t chp , oc
P t , j = chp sell = P t chp , fi
F f , j = chp = t Δ t F t , f chp
C j = chp op = 10 3 c chp , oc t Δ t P t chp , oc
C j = chp invAnn = 10 3 P chp , capn c chp , inv k af ( r , N chp )
C j = chp rmi = 10 3 P chp , capn c chp , inv k chp , rmi

Appendix B.8. Heat-Only Boiler (HOB)

SymbolDefaultSrcUnitDescription
N hob 15.000[94]aOperation life
Q ˙ hob , capx 0.000 kWthExisting capacity
η hob 90.000[94]%Thermal efficiency
c hob , inv 57.133[97]€/kWthCAPEX
k hob , rmi 18.000[94]%Repair, maintenance, and inspection per year and investment cost
F t , f hob - kWInput fuel flow
Q ˙ hob , capn - kWthNew capacity
Q ˙ t hob - kWthOuput heat flow
Q ˙ t hob = η hob f F t , f hob
Q ˙ t hob Q ˙ hob , capx + Q ˙ hob , capn
Φ i = heat 2 , j = hob , t source = Q ˙ t hob
F f , j = hob = t Δ t F t , f hob
C j = hob invAnn = 10 3 Q ˙ hob , capn c hob , inv k af ( r , N hob )
C j = hob rmi = 10 3 Q ˙ hob , capn c hob , inv k hob , rmi

Appendix B.9. Power-to-Heat (P2H)

SymbolDefaultSrcUnitDescription
N p 2 h 30.000 aOperation life
Q ˙ p 2 h , capx 0.000 kWthExisting capacity
η p 2 h 90.000[98]%Efficiency
c p 2 h , inv 100.000[99]€/kWthSystem CAPEX
k p 2 h , rmi 0.000 %Repair, maintenance, and inspection per year and investment cost
P t p 2 h - kWelConsuming power
Q ˙ p 2 h , capn - kWthNew capacity
Q ˙ t p 2 h - kWthProducing heat flow
Q ˙ t p 2 h = η p 2 h P t p 2 h
Q ˙ t p 2 h Q ˙ p 2 h , capx + Q ˙ p 2 h , capn
Φ i = heat 2 , j = p 2 h , t source = Q ˙ t p 2 h
Φ i = el , j = p 2 h , t sink = P t p 2 h
C j = p 2 h invAnn = 10 3 Q ˙ p 2 h , capn c p 2 h , inv k af ( r , N p 2 h )
C j = p 2 h rmi = 10 3 Q ˙ p 2 h , capn c p 2 h , inv k p 2 h , rmi

Appendix B.10. Electric Heat Pump (HP)

SymbolDefaultSrcUnitDescription
N hp 18.000[100]aOperation life
Q ˙ hp , capx 0.000 kWthExisting heating capacity
Q ˙ hp , max 100,000.000 kWthBig-M number (upper bound for CAPn + CAPx)
η hp 50.000[101]%Ratio of reaching the ideal COP (exergy efficiency)
ϑ c hp , cond - °CCondensation side temperature
ϑ e hp , eva - °CEvaporation side temperature
c hp , inv 285.788[102]€/kWelCAPEX
k hp , rmi 2.500[100]%Repair, maintenance, and inspection per year and investment cost
n hp 1.000 -Maximum number of parallel operation modes
P t , e , c hp - kWelConsuming power
Y t , e , c hp - -Binary: If source and sink are connected at time-step
Q ˙ hp , capn - kWthNew heating capacity
Q ˙ t , e , c hp , cond - kWthHeat flow released on condensation side
Q ˙ t , e , c hp , eva - kWthHeat flow absorbed on evaporation side
Q ˙ t , c , n hp , cond = cop t , c , n hp P t , c , n hp
Q ˙ t , c , n hp , cond = Q ˙ t , c , n hp , eva + P t , c , n hp
Q ˙ t , c , n hp Y t , c , n hp Q ˙ hp , max
c , n Q ˙ t , c , n hp Q ˙ hp , capx + Q ˙ hp , capn
c n Y t , c , n hp n hp
cop t , c , n hp = 100 if ϑ t , c hp , cond ϑ n hp , eva η hp cop t , c , n hp , carnot otherwise
cop t , c , n hp , carnot = ϑ t , c hp , cond + 273 ϑ t , c hp , cond ϑ n hp , eva
Y t , c , n hp { 0 , 1 }
Φ i , j = hp , t source = Q ˙ t , c , n hp , cond i , c H
Φ i , j = hp , t sink = Q ˙ t , c , n hp , eva i , n N
Φ i = el , j = hp , t sink = P t , c , n hp
C j = hp invAnn = 10 3 Q ˙ hp , capn c hp , inv k af ( r , N hp )
C j = hp rmi = 10 3 Q ˙ hp , capn c hp , inv k hp , rmi

Appendix B.11. Heat Downgrading (H2H1)

SymbolDefaultSrcUnitDescription
Q ˙ t h 2 h 1 - kWthHeat down-grading
Φ i = heat 1 , j = h 2 h 1 , t source = Q ˙ t h 2 h 1
Φ i = heat 2 , j = h 2 h 1 , t sink = Q ˙ t h 2 h 1

Appendix B.12. Product Demand (pDem)

Formulation partly based on [81].
SymbolDefaultSrcUnitDescription
G ˙ t , s pdem - t/hProduct demand
Φ i = prod , j = pdem , t sink = G ˙ t , s pdem

Appendix B.13. Production Process (PP)

SymbolDefaultSrcUnitDescription
P m pp , capx - kWel
η s , m pp - %Production efficiency
c pp , sc 10.000 €/changeCosts per sort change
c pp , su 10.000 €/SUCosts per start up
k m pp , minpl - %Minimum part load
y t , m pp , avail - -If machine is available at time step
y s , m pp , compat - -If machine and sort is compatible
C pp , sc - k€Total cost of sort change
C pp , su - k€Total cost of start up
P t , s , m pp - kWelNominal power consumption of machine
Y t , s , m pp , op - -Binary: If machine is in operation
Y t , s , m pp , sc - -Binary: If sort has just changed
Y t , m pp , su - -Binary: If machine just started up
G ˙ t , s , m pp - t/hProduction of machine
G ˙ t , s , m pp = η s , m pp y s , m pp , compat y t , m pp , avail
P t , s , m pp Y t , s , m pp , op P m pp , capx
P t , s , m pp Y t , s , m pp , op k m pp , minpl P m pp , capx
C pp , su = 10 3 t , m Y t , m pp , su c pp , su
Y t , m pp , su s Y t , s , m pp , op s Y t 1 , s , m pp , op
C pp , sc = 10 3 t , m Y t , m pp , sc c pp , sc
Y t , s , m pp , sc Y t , s , m pp , op Y t 1 , s , m pp , op t T \ { t 0 }
s Y t , s , m pp , op 1
Φ i = prod , j = pp , t source = m G ˙ t , s , m pp
P i = prod , j = pp , t sink = s , m P t , s , m pp
C j = pp op = C pp , sc + C pp , su

Appendix B.14. Product Storage (PS)

SymbolDefaultSrcUnitDescription
G s ps , capx - tExisting storage capacity of product
N ps 50.000 aOperation life
c ps , inv 1000.000 €/tInvestment cost
k s ps , ini - %Initial storage filling level
k s ps , min - %Share of minimal required storage filling level
E ps , delta - kWhelEnergy equivalent
G s ps , capn - tNew capacity
G s ps , delta - tFinal time step deviation from init
G t , s ps - tStorage filling level
G t , s ps ( G s ps , capx + G s ps , capn )
G t , s ps k s ps , min ( G s ps , capx + G s ps , capn )
G t | T | , s ps = k s ps , ini ( G s ps , capx + G s ps , capn ) G s ps , delta
E ps , delta = s G s ps , delta max m 1 η s , m pp
Φ i = prod , j = ps , t sink = 1 Δ t k s ps , ini ( G s ps , capx + G s ps , capn ) G t , s ps if t = t 0 G t 1 , s ps G t , s ps otherwise
C j = ps op = 3 × 10 3 ( t c t eg | T | + c eg , addon ) E ps , delta
C j = ps invAnn = 10 3 s G ˙ s ps , capn c ps , inv k af ( r , N ps )

Appendix B.15. Cooling Demand (cDem)

SymbolDefaultSrcUnitDescription
Q ˙ t , n cdem - kWthCooling demand
ϑ n cdem , in - °CCooling inlet temperature
ϑ n cdem , out - °CCooling outlet temperature
Φ i , j = cdem , t source = Q ˙ t , n cdem i , n N

Appendix B.16. Heating Demand (hDem)

SymbolDefaultSrcUnitDescription
Q ˙ t , h hdem - kWthHeating demand
ϑ h hdem , in - °CHeating inlet temperature
ϑ h hdem , out - °CHeating outlet temperature
Φ i , j = hdem , t sink = Q ˙ t , h hdem i , h H

Appendix B.17. Electricity Demand (eDem)

SymbolDefaultSrcUnitDescription
P t edem - kWelElectricity demand from standard load profile G3: Business continuous
Φ i = el , j = el , t sink = P t edem

References

  1. United Nations Framework Convention of Climate Change. Paris Agreement on Paris Climate Change Conference—November 2015. Available online: https://unfccc.int/sites/default/files/english_paris_agreement.pdf (accessed on 25 August 2021).
  2. United Nations Framework Convention of Climate Change. Glasgow Climate Pact—November 2021. Available online: https://unfccc.int/sites/default/files/resource/cma3_auv_2_cover%20decision.pdf (accessed on 18 November 2021).
  3. European Commission. A European Green Deal. Available online: https://ec.europa.eu/info/strategy/priorities-2019-2024/european-green-deal_en (accessed on 31 May 2021).
  4. Manfren, M.; Nastasi, B.; Tronchin, L.; Groppi, D.; Garcia, D.A. Techno-economic analysis and energy modelling as a key enablers for smart energy services and technologies in buildings. Renew. Sustain. Energy Rev. 2021, 150, 111490. [Google Scholar] [CrossRef]
  5. IEA. World Energy Outlook 2021. Available online: https://www.iea.org/reports/world-energy-outlook-2021 (accessed on 8 January 2022).
  6. International Energy Agency. Net Zero by 2050: A Roadmap for the Global Energy Sector—May 2021. Available online: https://www.iea.org/reports/net-zero-by-2050 (accessed on 18 November 2021).
  7. Frangopoulos, C.A. Recent developments and trends in optimization of energy systems. Energy 2018, 164, 1011–1020. [Google Scholar] [CrossRef]
  8. Sarma, D.S.; Warendorf, T.; Myrzik, J.; Rehtanz, C. Energy Management using Industrial Flexibility with Multi-objective Distributed Optimization. In Proceedings of the 2021 International Conference on Smart Energy Systems and Technologies (SEST), Vaasa, Finland, 6–8 September 2021; pp. 1–6. [Google Scholar] [CrossRef]
  9. Lombardi, P.; Komarnicki, P.; Zhu, R.; Liserre, M. Flexibility options identification within Net Zero Energy Factories. In Proceedings of the 2019 IEEE Milan PowerTech, Milan, Italy, 23–27 June 2019. [Google Scholar] [CrossRef]
  10. Andiappan, V. State-Of-The-Art Review of Mathematical Optimisation Approaches for Synthesis of Energy Systems. Process Integr. Optim. Sustain. 2017, 1, 165–188. [Google Scholar] [CrossRef]
  11. Hirth, L.; Ueckerdt, F.; Edenhofer, O. Integration costs revisited—An economic framework for wind and solar variability. Renew. Energy 2015, 74, 925–939. [Google Scholar] [CrossRef]
  12. Eurelectric. Everything you Always Wanted to Know about Demand Response. Available online: https://cdn.eurelectric.org/media/1940/demand-response-brochure-11-05-final-lr-2015-2501-0002-01-e-h-C783EC17.pdf (accessed on 8 December 2021).
  13. Zerrahn, A.; Schill, W.P. Long-run power storage requirements for high shares of renewables: Review and a new model. Renew. Sustain. Energy Rev. 2017, 79, 1518–1534. [Google Scholar] [CrossRef]
  14. Gils, H.C. Assessment of the theoretical demand response potential in Europe. Energy 2014, 67, 1–18. [Google Scholar] [CrossRef]
  15. Honarmand, M.E.; Hosseinnezhad, V.; Hayes, B.; Shafie-khah, M.; Siano, P. An Overview of Demand Response: From its Origins to the Smart Energy Community. IEEE Access 2021, 9, 96851–96876. [Google Scholar] [CrossRef]
  16. DRIP Project Team. Demand Response in Industrial Production (DRIP). Available online: https://webgate.ec.europa.eu/life/publicWebsite/index.cfm?fuseaction=search.dspPage&n_proj_id=4214 (accessed on 29 June 2022).
  17. DRIvE Project Team. Demand Response Integration tEchnologies (DRIvE) H2020 Project-Unlocking DR Potential. Available online: https://www.h2020-drive.eu/ (accessed on 29 June 2022).
  18. IndustRE Project Team. Using the flexibility potential in energy intensive industries to facilitate further grid integration of variable renewable energy sources (IndustRE). Available online: http://www.industre.eu (accessed on 29 June 2022).
  19. German Federal Ministry of Education and Research. How the Kopernicus Project SynErgie Helps Industry Match Its Electricity Demand to the Supply. Available online: https://www.kopernikus-projekte.de/en/projects/synergie (accessed on 29 June 2022).
  20. dena. Pilot Project DSM Bavaria. Available online: https://www.dena.de/en/topics-projects/projects/energy-systems/pilot-project-dsm-bavaria (accessed on 29 June 2022).
  21. FlexLast Project Team. The FlexLast Project: Refrigerated Warehouses Store Energy for Smart Energy Grid. Available online: https://www.zurich.ibm.com/flexlast/infographic_en (accessed on 29 June 2022).
  22. Heitkoetter, W.; Schyska, B.U.; Schmidt, D.; Medjroubi, W.; Vogt, T.; Agert, C. Assessment of the regionalised demand response potential in Germany using an open source tool and dataset. Adv. Appl. Energy 2021, 1, 100001. [Google Scholar] [CrossRef]
  23. Alipour, M.; Zare, K.; Seyedi, H.; Jalali, M. Real-time price-based demand response model for combined heat and power systems. Energy 2019, 168, 1119–1127. [Google Scholar] [CrossRef]
  24. Siddiquee, S.M.S.; Howard, B.; Bruton, K.; Brem, A.; O’Sullivan, D.T.J. Progress in Demand Response and It’s Industrial Applications. Front. Energy Res. 2021, 9, 673176. [Google Scholar] [CrossRef]
  25. Eurelectric. Flexibility and Aggregation: Requirements for Their Interaction in the Market. Available online: https://www.usef.energy/app/uploads/2016/12/EURELECTRIC-Flexibility-and-Aggregation-jan-2014.pdf (accessed on 25 August 2021).
  26. Papadaskalopoulos, D.; Moreira, R.; Strbac, G.; Pudjianto, D.; Djapic, P.; Teng, F.; Papapetrou, M. Quantifying the Potential Economic Benefits of Flexible Industrial Demand in the European Power System. IEEE Trans. Ind. Inform. 2018, 14, 5123–5132. [Google Scholar] [CrossRef]
  27. Liu, Z.; Zhao, Y.; Wang, X. Long-term economic planning of combined cooling heating and power systems considering energy storage and demand response. Appl. Energy 2020, 279, 115819. [Google Scholar] [CrossRef]
  28. Summerbell, D.L.; Khripko, D.; Barlow, C.; Hesselbach, J. Cost and carbon reductions from industrial demand-side management: Study of potential savings at a cement plant. Appl. Energy 2017, 197, 100–113. [Google Scholar] [CrossRef]
  29. Baumgärtner, N.; Delorme, R.; Hennen, M.; Bardow, A. Design of low-carbon utility systems: Exploiting time-dependent grid emissions for climate-friendly demand-side management. Appl. Energy 2019, 247, 755–765. [Google Scholar] [CrossRef]
  30. Jordehi, A.R. Optimisation of demand response in electric power systems, a review. Renew. Sustain. Energy Rev. 2019, 103, 308–319. [Google Scholar] [CrossRef]
  31. Fleschutz, M.; Bohlayer, M.; Braun, M.; Henze, G.; Murphy, M.D. The effect of price-based demand response on carbon emissions in European electricity markets: The importance of adequate carbon prices. Appl. Energy 2021, 295, 117040. [Google Scholar] [CrossRef]
  32. Al-falahi, M.D.; Jayasinghe, S.; Enshaei, H. A review on recent size optimization methodologies for standalone solar and wind hybrid renewable energy system. Energy Convers. Manag. 2017, 143, 252–274. [Google Scholar] [CrossRef]
  33. Ooka, R.; Ikeda, S. A review on optimization techniques for active thermal energy storage control. Energy Build. 2015, 106, 225–233. [Google Scholar] [CrossRef]
  34. Zhang, Q.; Grossmann, I.E. Enterprise-wide optimization for industrial demand side management: Fundamentals, advances, and perspectives. Chem. Eng. Res. Des. 2016, 116, 114–131. [Google Scholar] [CrossRef] [Green Version]
  35. Milan, C.; Stadler, M.; Cardoso, G.; Mashayekh, S. Modeling of non-linear CHP efficiency curves in distributed energy systems. Appl. Energy 2015, 148, 334–347. [Google Scholar] [CrossRef] [Green Version]
  36. Kotzur, L.; Nolting, L.; Hoffmann, M.; Groß, T.; Smolenko, A.; Priesmann, J.; Büsing, H.; Beer, R.; Kullmann, F.; Singh, B.; et al. A modeler’s guide to handle complexity in energy systems optimization. Adv. Appl. Energy 2021, 4, 100063. [Google Scholar] [CrossRef]
  37. Manfren, M.; Nastasi, B.; Groppi, D.; Astiaso Garcia, D. Open data and energy analytics-An analysis of essential information for energy system planning, design and operation. Energy 2020, 213, 118803. [Google Scholar] [CrossRef]
  38. Pfenninger, S.; Hirth, L.; Schlecht, I.; Schmid, E.; Wiese, F.; Brown, T.; Davis, C.; Gidden, M.; Heinrichs, H.; Heuberger, C.; et al. Opening the black box of energy modelling: Strategies and lessons learned. Energy Strategy Rev. 2018, 19, 63–71. [Google Scholar] [CrossRef]
  39. Pfenninger, S.; DeCarolis, J.; Hirth, L.; Quoilin, S.; Staffell, I. The importance of open data and software: Is energy research lagging behind? Energy Policy 2017, 101, 211–215. [Google Scholar] [CrossRef]
  40. Ringkjøb, H.K.; Haugan, P.M.; Solbrekke, I.M. A review of modelling tools for energy and electricity systems with large shares of variable renewables. Renew. Sustain. Energy Rev. 2018, 96, 440–459. [Google Scholar] [CrossRef]
  41. Lopion, P.; Markewitz, P.; Robinius, M.; Stolten, D. A review of current challenges and trends in energy systems modeling. Renew. Sustain. Energy Rev. 2018, 96, 156–166. [Google Scholar] [CrossRef]
  42. Kriechbaum, L.; Scheiber, G.; Kienberger, T. Grid-based multi-energy systems—Modelling, assessment, open source modelling frameworks and challenges. Energy Sustain. Soc. 2018, 8, 1–19. [Google Scholar] [CrossRef] [Green Version]
  43. Mancarella, P. MES (multi-energy systems): An overview of concepts and evaluation models. Energy 2014, 65, 1–17. [Google Scholar] [CrossRef]
  44. Lund, H.; Thellufsen, J.Z.; Østergaard, P.A.; Sorknæs, P.; Skov, I.R.; Mathiesen, B.V. EnergyPLAN – Advanced analysis of smart energy systems. Smart Energy 2021, 1, 100007. [Google Scholar] [CrossRef]
  45. Sen, R.; Bhattacharyya, S.C. Off-grid electricity generation with renewable energy technologies in India: An application of HOMER. Renew. Energy 2014, 62, 388–398. [Google Scholar] [CrossRef]
  46. Bauer, D.; Kirschbaum, S.; Wrobel, G.; Agudelo, J.; Voll, P. Modellbasierte Optimierung von Energiesystemen. In Proceedings of the GI-Jahrestagung, Cottbus, Germany, 28 September–2 October 2015; Available online: https://cs.emis.de/LNI/Proceedings/Proceedings246/137.pdf (accessed on 25 November 2021).
  47. Pfenninger, S.; Pickering, B. Calliope: A multi-scale energy systems modelling framework. J. Open Source Softw. 2018, 3, 825. [Google Scholar] [CrossRef] [Green Version]
  48. Langiu, M.; Shu, D.Y.; Baader, F.J.; Hering, D.; Bau, U.; Xhonneux, A.; Müller, D.; Bardow, A.; Mitsos, A.; Dahmen, M. COMANDO: A Next-Generation Open-Source Framework for Energy Systems Optimization. Comput. Chem. Eng. 2021, 152, 107366. [Google Scholar] [CrossRef]
  49. Atabay, D. An open-source model for optimal design and operation of industrial energy systems. Energy 2017, 121, 803–821. [Google Scholar] [CrossRef]
  50. Hilpert, S.; Kaldemeyer, C.; Krien, U.; Günther, S.; Wingenbach, C.; Plessmann, G. The Open Energy Modelling Framework (oemof)—A new approach to facilitate open science in energy system modelling. Energy Strategy Rev. 2018, 22, 16–25. [Google Scholar] [CrossRef] [Green Version]
  51. Zade, M.; You, Z.; Nalini, B.K.; Tzscheutschler, P.; Wagner, U. Quantifying the Flexibility of Electric Vehicles in Germany and California—A Case Study. Energies 2020, 13, 5617. [Google Scholar] [CrossRef]
  52. Howells, M.; Rogner, H.; Strachan, N.; Heaps, C.; Huntington, H.; Kypreos, S.; Hughes, A.; Silveira, S.; DeCarolis, J.; Bazillian, M.; et al. OSeMOSYS: The Open Source Energy Modeling System: An introduction to its ethos, structure and development. Energy Policy 2011, 39, 5850–5870. [Google Scholar] [CrossRef]
  53. Hunter, K.; Sreepathi, S.; DeCarolis, J.F. Modeling for insight using Tools for Energy Model Optimization and Analysis (Temoa). Energy Econ. 2013, 40, 339–349. [Google Scholar] [CrossRef]
  54. Dorfner, J.; Schönleber, K.; Dorfner, M.; sonercandas; froehlie; smuellr; dogauzrek; WYAUDI; Leonhard, B.; lodersky; et al. tum-ens/urbs: Urbs v1.0.1, 2019. Available online: https://zenodo.org/record/3265960 (accessed on 29 June 2022).
  55. Oemof: A Modular Open Source Framework to Model Energy Supply Systems. Available online: https://oemof.org (accessed on 25 August 2021).
  56. Krien, U.; Schönfeldt, P.; Launer, J.; Hilpert, S.; Kaldemeyer, C.; Pleßmann, G. oemof.solph—A model generator for linear and mixed-integer linear optimisation of energy systems. Softw. Impacts 2020, 6, 100028. [Google Scholar] [CrossRef]
  57. Gurobi Optimization, LLC. Gurobi Python API Overview. Available online: https://www.gurobi.com/documentation/9.5/refman/py_python_api_overview.html (accessed on 8 December 2021).
  58. Krien, U.; Schönfeldt, P.; gplssm; jnnr; Schachler, B.; Möller, C.; Pyosch; Bosch, S.; henhuy. oemof/demandlib: Famous Future, 2021. Available online: https://zenodo.org/record/4473045#.Yr0dPOxBxhE (accessed on 29 June 2022).
  59. U.S., S.E.I. NEMO: Next Energy Modeling system for Optimization. Available online: https://github.com/sei-international/NemoMod.jl (accessed on 25 August 2021).
  60. Devathon. Julia vs. Python in 2020. Available online: https://medium.com/@devathon_/julia-vs-python-in-2020-d2dc2c2ef3f (accessed on 8 January 2022).
  61. Fleschutz, M. DrafProject/draf: V0.2.0. 2022. Available online: https://zenodo.org/record/6535926#.Yr0doexBxhE (accessed on 29 June 2022).
  62. Python Software Foundation. Python Language Reference. Available online: http://www.python.org (accessed on 25 August 2021).
  63. O’Reilly Media. Where Programming, Ops, AI, and the Cloud are Headed in 2021. Available online: https://www.oreilly.com/radar/where-programming-ops-ai-and-the-cloud-are-headed-in-2021 (accessed on 13 August 2021).
  64. Pandas Development Team. pandas-dev/pandas: Pandas. 2020. Available online: https://zenodo.org/record/6702671#.Yr0d7OxBxhE (accessed on 29 June 2022).
  65. Hunter, J.D. Matplotlib: A 2D graphics environment. Comput. Sci. Eng. 2007, 9, 90–95. [Google Scholar] [CrossRef]
  66. Plotly. Collaborative Data Science. Available online: https://plot.ly (accessed on 25 August 2021).
  67. Hart, W.E.; Watson, J.P.; Woodruff, D.L. Pyomo: Modeling and solving mathematical programs in Python. Math. Program. Comput. 2011, 3, 219–260. [Google Scholar] [CrossRef]
  68. Gurobi Optimization, LLC. Gurobi Optimizer (Software Program). Available online: http://www.gurobi.com (accessed on 25 August 2021).
  69. Fleschutz, M.; Murphy, M.D. elmada: Dynamic electricity carbon emission factors and prices for Europe. J. Open Source Softw. 2021, 6, 3625. [Google Scholar] [CrossRef]
  70. Fleschutz, M.; Murphy, M.D. Elmada v0.1.0. 2021. Available online: https://zenodo.org/record/5566694#.Yr0ePuxBxhE (accessed on 29 June 2022).
  71. ENTSO-E. ENTSO-E Transparency Platform. Available online: https://transparency.entsoe.eu (accessed on 25 August 2021).
  72. Pfenninger, S.; Staffell, I. Long-term patterns of European PV output using 30 years of validated hourly reanalysis and satellite data. Energy 2016, 114, 1251–1265. [Google Scholar] [CrossRef] [Green Version]
  73. DWD Climate Data Center (CDC). Hourly Station Observations of Solar Incoming (Total/Diffuse) and Longwave Downward Radiation for Germany, Version Recent. Available online: https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/hourly/solar/ (accessed on 25 August 2021).
  74. BDEW—National Association for the Energy and Water Industries. Standardlastprofile Strom—Standard Load Profiles Electricity. Available online: https://www.bdew.de/energie/standardlastprofile-strom (accessed on 25 August 2021).
  75. Python-Holidays Developers. Generate and Work with Holidays in Python. Available online: https://github.com/dr-prodigy/python-holidays (accessed on 25 August 2021).
  76. Bohlayer, M.; Zöttl, G. Low-grade waste heat integration in distributed energy generation systems—An economic optimization approach. Energy 2018, 159, 327–343. [Google Scholar] [CrossRef]
  77. Bohlayer, M.; Bürger, A.; Fleschutz, M.; Braun, M.; Zöttl, G. Multi-period investment pathways—Modeling approaches to design distributed energy systems under uncertainty. Appl. Energy 2021, 285, 116368. [Google Scholar] [CrossRef]
  78. Bracco, S.; Dentici, G.; Siri, S. DESOD: A mathematical programming tool to optimally design a distributed energy system. Energy 2016, 100, 298–309. [Google Scholar] [CrossRef]
  79. Moritz, P.; Nishihara, R.; Wang, S.; Tumanov, A.; Liaw, R.; Liang, E.; Elibol, M.; Yang, Z.; Paul, W.; Jordan, M.I.; et al. Ray: A Distributed Framework for Emerging AI Applications. arXiv 2017, arXiv:1712.05889. [Google Scholar] [CrossRef]
  80. Perez, F.; Granger, B.E. IPython: A System for Interactive Scientific Computing. Comput. Sci. Eng. 2007, 9, 21–29. [Google Scholar] [CrossRef]
  81. Fleschutz, M.; Bohlayer, M.; Bürger, A.; Braun, M. Electricity Cost Reduction Potential of Industrial Processes using Real Time Pricing in a Production Planning Problem. In Proceedings of the 4th Collaborative European Research Conference (CERC 2017), Karlsruhe, Germany, 22–23 September 2017; pp. 240–248. Available online: https://www.researchgate.net/publication/349213821 (accessed on 28 June 2022).
  82. Bohlayer, M.; Fleschutz, M.; Braun, M.; Zöttl, G. Energy-intense production-inventory planning with participation in sequential energy markets. Appl. Energy 2020, 258, 113954. [Google Scholar] [CrossRef]
  83. Vartiainen, E.; Masson, G.; Breyer, C.; Moser, D.; Medina, E.R. Impact of weighted average cost of capital, capital expenditure, and other parameters on future utility-scale PV levelised cost of electricity. Prog. Photovolt. Res. Appl. 2019, 28, 439–453. [Google Scholar] [CrossRef] [Green Version]
  84. Jülch, V. Comparison of electricity storage options using levelized cost of storage (LCOS) method. Appl. Energy 2016, 183, 1594–1606. [Google Scholar] [CrossRef]
  85. Carroquino, J.; Escriche-Martínez, C.; Valiño, L.; Dufo-López, R. Comparison of Economic Performance of Lead-Acid and Li-Ion Batteries in Standalone Photovoltaic Energy Systems. Appl. Sci. 2021, 11, 3587. [Google Scholar] [CrossRef]
  86. Redondo-Iglesias, E.; Venet, P.; Pelissier, S. Measuring Reversible and Irreversible Capacity Losses on Lithium-Ion Batteries. In Proceedings of the 2016 IEEE Vehicle Power and Propulsion Conference (VPPC), Hangzhou, China, 17–20 October 2016. [Google Scholar] [CrossRef] [Green Version]
  87. Pv Magazine. Pv Magazine Marktübersicht für Großspeicher Aktualisiert. Available online: https://perma.cc/CFH9-98J5 (accessed on 3 September 2021).
  88. Figgener, J.; Stenzel, P.; Kairies, K.P.; Linßen, J.; Haberschusz, D.; Wessels, O.; Robinius, M.; Stolten, D.; Sauer, D.U. The development of stationary battery storage systems in Germany—Status 2020. J. Energy Storage 2021, 33, 101982. [Google Scholar] [CrossRef]
  89. Leippi, A.; Fleschutz, M.; Murphy, M.D. A Review of EV Battery Utilization in Demand Response Considering Battery Degradation in Non-Residential Vehicle-to-Grid Scenarios. Energies 2022, 15, 3227. [Google Scholar] [CrossRef]
  90. Tiemann, P.H.; Bensmann, A.; Stuke, V.; Hanke-Rauschenbach, R. Electrical energy storage for industrial grid fee reduction—A large scale analysis. Energy Convers. Manag. 2020, 208, 112539. [Google Scholar] [CrossRef]
  91. FFE. Verbundforschungsvorhaben Merit Order der Energiespeicherung im Jahr 2030. Available online: https://perma.cc/F9X5-HG3B (accessed on 3 September 2021).
  92. Fraunhofer ISE. Stromgestehungskosten Erneuerbare Energien. Available online: https://perma.cc/MQS2-DCPL (accessed on 3 September 2021).
  93. BMWI. EEG-Umlage sinkt 2021. Available online: https://www.bmwi-energiewende.de/EWD/Redaktion/Newsletter/2020/11/Meldung/News1.html (accessed on 3 September 2021).
  94. Weber, C.I. Multi-Objective Design and Optimization of District Energy Systems Including Polygeneration Energy Conversion Technologies; EPFL: Lausanne, Switzerland, 2008; p. 210. [Google Scholar] [CrossRef]
  95. Mathiesen, B.; Lund, H.; Connolly, D.; Wenzel, H.; Østergaard, P.; Möller, B.; Nielsen, S.; Ridjan, I.; Karnøe, P.; Sperling, K.; et al. Smart Energy Systems for coherent 100% renewable energy and transport solutions. Appl. Energy 2015, 145, 139–154. [Google Scholar] [CrossRef]
  96. ASUE. BHKW-Kenndaten 2011. Available online: https://perma.cc/KHG2-WPPX (accessed on 3 September 2021).
  97. Viessmann. Preisliste DE Heizsysteme. Available online: https://perma.cc/U2JM-R2L7 (accessed on 3 September 2021).
  98. Wang, X.; Jin, M.; Feng, W.; Shu, G.; Tian, H.; Liang, Y. Cascade energy optimization for waste heat recovery in distributed energy systems. Appl. Energy 2018, 230, 679–695. [Google Scholar] [CrossRef]
  99. Hinterberger, R.; Hinrichsen, J.; Dedeyne, S. Power-To-Heat Anlagen zur Verwertung von EEÜberschussstrom—Neuer Rechtsrahmen im Energiewirtschaftsgesetz, bisher ohne Wirkung. Available online: https://perma.cc/FF2E-SE33 (accessed on 3 September 2021).
  100. Beuth. VDI 2067 Blatt 1:2012-09. Available online: https://www.beuth.de/de/technische-regel/vdi-2067-blatt-1/151420393 (accessed on 3 September 2021).
  101. Arat, H.; Arslan, O. Exergoeconomic analysis of district heating system boosted by the geothermal heat pump. Energy 2017, 119, 1159–1170. [Google Scholar] [CrossRef]
  102. Wolf, S. Integration von Wärmepumpen in industrielle Produktionssysteme: Potenziale und Instrumente zur Potenzialerschließung. Ph.D. Thesis, Universität Stuttgart, Institut für Energiewirtschaft und Rationelle Energieanwendung, Stuttgart, Germany, 2017. [Google Scholar] [CrossRef]
Figure 1. Schematic depiction of DRAF’s toolboxes, including examples and how they relate to the energy system analysis and optimization process and the used external resources/data. For example, parameterization is supported by DRAF through the parameter preparation tool TimeSeriesPrepper, which, e.g., provides electricity prices using the tool Elmada as an external resource.
Figure 1. Schematic depiction of DRAF’s toolboxes, including examples and how they relate to the energy system analysis and optimization process and the used external resources/data. For example, parameterization is supported by DRAF through the parameter preparation tool TimeSeriesPrepper, which, e.g., provides electricity prices using the tool Elmada as an external resource.
Sustainability 14 08025 g001
Figure 2. Key questions answered by DRAF.
Figure 2. Key questions answered by DRAF.
Sustainability 14 08025 g002
Figure 3. Software architecture of DRAF. The user interacts with DRAF via Jupyter notebooks. To carry out an analysis, the user initiates a CaseStudy and defines scenarios using the scenario generator, component templates, and parameter preparation tools (DataBase and TimeSeriesPrepper). The model generator builds optimization models from the model definition consisting of data and logic. After the optimization, the results can be plotted either via CaseStudyPlotter or via ScenarioPlotter using convenient dot notation (e.g., cs.plot.tables(); see Figure A3).
Figure 3. Software architecture of DRAF. The user interacts with DRAF via Jupyter notebooks. To carry out an analysis, the user initiates a CaseStudy and defines scenarios using the scenario generator, component templates, and parameter preparation tools (DataBase and TimeSeriesPrepper). The model generator builds optimization models from the model definition consisting of data and logic. After the optimization, the results can be plotted either via CaseStudyPlotter or via ScenarioPlotter using convenient dot notation (e.g., cs.plot.tables(); see Figure A3).
Sustainability 14 08025 g003
Figure 4. Listings of example components.
Figure 4. Listings of example components.
Sustainability 14 08025 g004aSustainability 14 08025 g004b
Figure 5. An example where collectors (circles) induce component interdependencies. The Main component collects operating and investment costs and the two sides of the electricity balance for each time step. The electricity grid (EG) component collects for each time step electricity that is fed into the grid—here, the contributors are the fuel cell (FC) and the photovoltaic system (PV). This separate feed-in collector is important for the reusability of the EG component. The electricity demand (eDem) only affects the electricity balance sinks. The component interdependencies are considered within model generation through topology sort. This ensures that all submodels contributing to a collector are built before that collector is executed.
Figure 5. An example where collectors (circles) induce component interdependencies. The Main component collects operating and investment costs and the two sides of the electricity balance for each time step. The electricity grid (EG) component collects for each time step electricity that is fed into the grid—here, the contributors are the fuel cell (FC) and the photovoltaic system (PV). This separate feed-in collector is important for the reusability of the EG component. The electricity demand (eDem) only affects the electricity balance sinks. The component interdependencies are considered within model generation through topology sort. This ensures that all submodels contributing to a collector are built before that collector is executed.
Sustainability 14 08025 g005
Figure 6. Setup of cement case study.
Figure 6. Setup of cement case study.
Sustainability 14 08025 g006
Figure 7. Left: Machine and cement-sort specific production efficiencies. Right: Cement demand and fixed electricity demand.
Figure 7. Left: Machine and cement-sort specific production efficiencies. Right: Cement demand and fixed electricity demand.
Sustainability 14 08025 g007
Figure 8. Results of Case Study 1: Resulting production plans, price schemes, and silo filling levels for ten sample days in April. Top: Reference scenario with the time-of-use pricing scheme. Bottom: Scenario with hourly German day-ahead market prices.
Figure 8. Results of Case Study 1: Resulting production plans, price schemes, and silo filling levels for ten sample days in April. Top: Reference scenario with the time-of-use pricing scheme. Bottom: Scenario with hourly German day-ahead market prices.
Sustainability 14 08025 g008
Figure 9. Correlations between purchased electricity and real-time-prices for both scenarios.
Figure 9. Correlations between purchased electricity and real-time-prices for both scenarios.
Sustainability 14 08025 g009
Figure 10. Setup and problem of Case Study 2. Setup: A company that can buy electricity from the grid and sell it to the grid has an existing 300 kW peak PV system, 1000 m2 additionally available rooftop space for the installation of a new PV system, and an inflexible electricity demand. Problem: The design (nominal capacity/power) of the BES and the new PV is to be optimized assuming optimal charging and discharging of the BES considering peak shaving, RTPs through hourly wholesale prices, and the optimization of self-consumption.
Figure 10. Setup and problem of Case Study 2. Setup: A company that can buy electricity from the grid and sell it to the grid has an existing 300 kW peak PV system, 1000 m2 additionally available rooftop space for the installation of a new PV system, and an inflexible electricity demand. Problem: The design (nominal capacity/power) of the BES and the new PV is to be optimized assuming optimal charging and discharging of the BES considering peak shaving, RTPs through hourly wholesale prices, and the optimization of self-consumption.
Sustainability 14 08025 g010
Figure 11. Top: Stacked area plot of electricity balance. Energy sources are positive. Energy usages are negative. Bottom: Real-time prices.
Figure 11. Top: Stacked area plot of electricity balance. Energy sources are positive. Energy usages are negative. Bottom: Real-time prices.
Sustainability 14 08025 g011
Figure 12. Setup and superstructure of Case Study 3.
Figure 12. Setup and superstructure of Case Study 3.
Sustainability 14 08025 g012
Figure 13. Scheme with details on modeling different temperature levels for Case Study 3. The HPs could choose between three source and sink temperature levels. The evaporation and condensation temperatures were calculated assuming a 5 K temperature difference for heat exchange. The coefficient of performance was calculated from the evaporation and condensation temperatures. Assuming the installation of multiple HPs, multiple parallel operation modes, i.e., temperature combinations between evaporation and condensation, can exist; however, for the calculation of the annualized investment costs, the capacities of all HPs are aggregated, which significantly reduces the model’s complexity. For more details on HP modeling, see Appendix B.10.
Figure 13. Scheme with details on modeling different temperature levels for Case Study 3. The HPs could choose between three source and sink temperature levels. The evaporation and condensation temperatures were calculated assuming a 5 K temperature difference for heat exchange. The coefficient of performance was calculated from the evaporation and condensation temperatures. Assuming the installation of multiple HPs, multiple parallel operation modes, i.e., temperature combinations between evaporation and condensation, can exist; however, for the calculation of the annualized investment costs, the capacities of all HPs are aggregated, which significantly reduces the model’s complexity. For more details on HP modeling, see Appendix B.10.
Sustainability 14 08025 g013
Figure 14. Pareto-optimal configuration scenarios of Case Study 3. The dotted line approximates the Pareto frontier. REF is not on the Pareto front, since both objectives can be improved as, e.g., in sc2 or sc3. The broken y-axis was used to fit in the minimal-emission scenario sc7 ( α = 1 ), which has a more than 41 times higher TAC than REF. Scenario sc3 has 9% less TAC than the REF whilst also reducing carbon emissions by two thirds.
Figure 14. Pareto-optimal configuration scenarios of Case Study 3. The dotted line approximates the Pareto frontier. REF is not on the Pareto front, since both objectives can be improved as, e.g., in sc2 or sc3. The broken y-axis was used to fit in the minimal-emission scenario sc7 ( α = 1 ), which has a more than 41 times higher TAC than REF. Scenario sc3 has 9% less TAC than the REF whilst also reducing carbon emissions by two thirds.
Sustainability 14 08025 g014
Figure 15. Results per scenario of Case Study 3. Top: Capacities, investment costs, and operating costs. Middle left: Thermal energy storage (TES) capacities per temperature level. Middle right: TAC per cost type: operating costs (op), maintenance costs (RMI), and annualized investment costs (ann_inv). Bottom: Distribution of the electricity bought from the grid (negative = sold electricity).
Figure 15. Results per scenario of Case Study 3. Top: Capacities, investment costs, and operating costs. Middle left: Thermal energy storage (TES) capacities per temperature level. Middle right: TAC per cost type: operating costs (op), maintenance costs (RMI), and annualized investment costs (ann_inv). Bottom: Distribution of the electricity bought from the grid (negative = sold electricity).
Sustainability 14 08025 g015
Table 1. Comparison of DRAF with other bottom-up model frameworks for operation and investment decision support of L-MESs divided by whether they are open-source. All links were last accessed on 25 November 2021. Sources: Based on [40] and own research as of 25 November 2021.
Table 1. Comparison of DRAF with other bottom-up model frameworks for operation and investment decision support of L-MESs divided by whether they are open-source. All links were last accessed on 25 November 2021. Sources: Based on [40] and own research as of 25 November 2021.
FrameworkOpen-SourceModelDRAF FocusDRAF Features
MethodologyMOPurposeDRMTLIPPTSAMGPPSGIPMD
EnergyPLAN (https://www.energyplan.eu) [44]Simulation-LTS/IDS-
HOMER Pro (https://www.homerenergy.com) [45]Simulation a-IDS, ODS-(✓)
TOP-Energy (https://www.top-energy.de) [46]Simulation+(MI)LPIDS, ODS-(✓)
Calliope (https://www.callio.pe) [47]✓ (https://github.com/calliope-project/calliope)(MI)LPIDS, ODS
COMANDO (https://comando.readthedocs.io) [48]✓ (https://jugit.fz-juelich.de/iek-10/public/optimization/comando)NLPLTS?, ODS
ficus (https://ficus.readthedocs.io) [49]✓ (https://github.com/tum-ewk/ficus)(MI)LPIDS, ODS
oemof (https://oemof.readthedocs.io) [50]✓ (https://github.com/oemof/oemof)(MI)LPLTS, IDS, ODS(✓)
OpenTUMFlex (https://opentumflex.readthedocs.io) [51]✓ (https://github.com/tum-ewk/OpenTUMFlex)(MI)LPIDS b
OSeMOSYS (http://www.osemosys.org) [52]✓ (https://github.com/OSeMOSYS/OSeMOSYS)LPIDSc
Temoa (https://temoacloud.com) [53]✓ (https://github.com/TemoaProject/temoa)LPLTS
urbs (https://urbs.readthedocs.io) [54]✓ (https://github.com/tum-ens/urbs)LPIDS, ODS
DRAF (our approach)✓ (https://github.com/DrafProject/draf)(MI)LPIDS, ODS
✓: Applicable; ✗: Not Applicable; (✓): Partly applicable; a: Optimization through automatic sensitivity analysis; b: focus on residential sector; c: focus on developing countries; Simulation: computer simulation; LTS: long term scenarios; IDS/ODS: investment/operation decision support; MO: multi-objective; TSA: time series analysis; MG: model generator; PP: parameter preparation; SG: scenario generator; IP: interactive plotting; DR: demand response; MTL: multiple temperature levels; IPP: industrial production processes; MD: metadata handling.
Table 2. Capacities and investment costs of Case Study 2.
Table 2. Capacities and investment costs of Case Study 2.
ScenarioCAPxCAPn C inv [k€] C inv , ann [k€/a]
BESPVBESPVBESPVBESPV
REF03000.00.00.00.00.00.0
optBes0300233.40.048.80.04.30.0
optPV03000.0153.80.059.10.04.6
optBesPv0300265.6153.855.559.14.84.6
Table 3. Peak reductions of Case Study 2.
Table 3. Peak reductions of Case Study 2.
Scenario P max P max , reduction W buy W sell
REF1445 kW0 kW0.0%7.122 GWh/a0.000 GWh/a
optBes1330 kW115 kW0.1%7.130 GWh/a0.000 GWh/a
optPV1445 kW0 kW0.0%6.952 GWh/a0.000 GWh/a
optBesPv1320 kW125 kW0.1%6.960 GWh/a0.000 GWh/a
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Fleschutz, M.; Bohlayer, M.; Braun, M.; Murphy, M.D. Demand Response Analysis Framework (DRAF): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems. Sustainability 2022, 14, 8025. https://doi.org/10.3390/su14138025

AMA Style

Fleschutz M, Bohlayer M, Braun M, Murphy MD. Demand Response Analysis Framework (DRAF): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems. Sustainability. 2022; 14(13):8025. https://doi.org/10.3390/su14138025

Chicago/Turabian Style

Fleschutz, Markus, Markus Bohlayer, Marco Braun, and Michael D. Murphy. 2022. "Demand Response Analysis Framework (DRAF): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems" Sustainability 14, no. 13: 8025. https://doi.org/10.3390/su14138025

APA Style

Fleschutz, M., Bohlayer, M., Braun, M., & Murphy, M. D. (2022). Demand Response Analysis Framework (DRAF): An Open-Source Multi-Objective Decision Support Tool for Decarbonizing Local Multi-Energy Systems. Sustainability, 14(13), 8025. https://doi.org/10.3390/su14138025

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop