Metadata-Version: 2.1
Name: energysim
Version: 0.0.2
Summary: Python package for cosimulation of FMU based multi-energy systems
Home-page: https://github.com/dgusain1/energysim
Author: Digvijay Gusain
Author-email: d.gusain@tudelft.nl
License: MIT
Description: # energysim
        
        ![energysim](https://i.imgur.com/9Z73YNM.png)
        
        **energysim** (previously, FMUWorld) is a python-based tool that was developed specifically to simplify energy system based cosimulations. Currently, it allows users to combine:
        
          - Dynamic models packaged as Functional Mockup Units (FMUs)
          - Pandapower Networks packaged as pickle files
          - PyPSA models (BETA) packaged as Excel workbook
          - csv data files
        
        ## Installation
        energysim can be installed using PyPI index command:
        ```
        pip install energysim
        ```
        
        It uses the following packages to work:
          - [FMPy](https://github.com/CATIA-Systems/FMPy)
          - [Numpy](https://pypi.org/project/numpy/)
          - [Pandas](https://pypi.org/project/pandas/)
          - [Matplotlib](https://pypi.org/project/matplotlib/)
          - [Pandapower](https://pypi.org/project/pandapower/)
          - [PyPSA](https://pypi.org/project/pypsa/)
          - [tqdm](https://pypi.org/project/tqdm/)
        
        ## Usage
        energysim simplifies cosimulation setup by conceptualising the setup in an intuitive manner. The whole system is defined within a `World()` canvas. Within `World()`, users can specify different simulators by using commands such as `add_fmu()`, `add_powerflow()`, `add_csv()`, `add_signal()`. Apart from this, users can also specify initialisation options using the `options()` command, connections between simulators using the `add_connections()` command. Finally, the system can be simulated using the `simulate()` command. This method provides a results dataframe which can then be used for analysis of the multi-energy system simulation. Apart from simple simulations, **energysim** alo incudes a method to perform sensitivity analysis on selected parameters within the cosimulation environment.
        
        A brief example is shown below:
        
        ```
        #import package
        from FMUWorld import World
        #create world instance
        my_world = World(stop_time = 1000, 
                        logging = True, 
                        exchange = 2,
                        interpolate_results = False)
        
        simLoc1 = os.path.join(working_dir,chp+'.fmu') #fmu location
        simLoc2 = os.path.join(working_dir,elec+'.p') #pandapower network location
        
        #add fmu
        my_world.add_fmu(name = 'chp', 
                        loc = simLoc1, 
                        step_size = 2, 
                        outputs = ['rampeQfuel.y.signal',
                                    'Alternateur.Welec'])
        my_world.add_powerflow(name = 'elec', 
                        loc = simLoc2, 
                        step_size = 1e-3, 
                        inputs = ['gen1.P']
                        outputs = ['gen1.f',
                                   'gen2.f',
                                   'gen3.f'])
        
        #define connections
        connections = 
            {'chp.Alternateur.Welec':'elec.gen1.P'}
        
        #add connections
        my_world.add_connections(connections)
        
        #simulate
        results = my_world.simulate()
        ```
        
        More information is provided on the documentation page.
        
        ## Citing
        Please cite the following paper if you use **energysim**:
        Gusain, D, Cvetković, M & Palensky, P 2019, Energy flexibility analysis using FMUWorld. in 2019 IEEE Milan PowerTech., 8810433, IEEE, 2019 IEEE Milan PowerTech, PowerTech 2019, Milan, Italy, 23/06/19. https://doi.org/10.1109/PTC.2019.8810433
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
