コード例 #1
0
    def setup_pipeline_network(self, fluid_list):
        """Setup a pipeline network."""
        self.nw = Network(fluids=fluid_list)
        self.nw.set_attr(p_unit='bar', T_unit='C', iterinfo=False)

        # %% components

        # main components
        pu = Pump('pump')
        pi = Pipe('pipeline')
        es = HeatExchangerSimple('energy balance closing')

        closer = CycleCloser('cycle closer')

        pu_pi = Connection(pu, 'out1', pi, 'in1')
        pi_es = Connection(pi, 'out1', es, 'in1')
        es_closer = Connection(es, 'out1', closer, 'in1')
        closer_pu = Connection(closer, 'out1', pu, 'in1')
        self.nw.add_conns(pu_pi, pi_es, es_closer, closer_pu)

        # %% parametrization of components

        pu.set_attr(eta_s=0.7)
        pi.set_attr(pr=0.95, L=100, ks=1e-5, D='var', Q=0)
        es.set_attr(pr=1)

        # %% parametrization of connections

        pu_pi.set_attr(p=20, T=100, m=10, fluid={self.nw.fluids[0]: 1})

        # %% solving
        self.nw.solve('design')
コード例 #2
0
    def create_comps(self):

        for i in range(self.num_consumer - 1):
            j = str(i)
            self.comps['feed_' + j] = Pipe(self.label + '_pipe feed_' + j)
            self.comps['return_' + j] = Pipe(self.label + '_pipe return_' + j)

        for i in range(self.num_consumer):
            j = str(i)
            self.comps['splitter_' + j] = Splitter(self.label + '_splitter_' +
                                                   j)
            self.comps['merge_' + j] = Merge(self.label + '_merge_' + j)
            self.comps['consumer_' + j] = HeatExchangerSimple(self.label +
                                                              '_consumer_' + j)
            self.comps['valve_' + j] = Valve(self.label + '_valve_' + j)
コード例 #3
0
ファイル: test_network.py プロジェクト: oemof/tespy
    def test_Network_missing_data_in_individual_design_case_file(self):
        """Test for missing data in individual design case files."""
        self.setup_Network_tests()
        pi = Pipe('pipe', Q=0, pr=0.95, design=['pr'], offdesign=['zeta'])
        a = Connection(self.source, 'out1', pi, 'in1', m=1, p=1, T=293.15,
                       fluid={'water': 1})
        b = Connection(pi, 'out1', self.sink, 'in1', design_path='tmp2')
        self.nw.add_conns(a, b)
        self.nw.solve('design')
        self.nw.save('tmp')
        self.nw.save('tmp2')

        inputs = open('./tmp/connections.csv')
        all_lines = inputs.readlines()
        all_lines.pop(len(all_lines) - 1)
        inputs.close()

        with open('./tmp2/connections.csv', 'w') as out:
            for line in all_lines:
                out.write(line.strip() + '\n')

        self.offdesign_TESPyNetworkError(design_path='tmp', init_only=True)

        shutil.rmtree('./tmp', ignore_errors=True)
        shutil.rmtree('./tmp2', ignore_errors=True)
コード例 #4
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_ref_creation_error():
    """Test errors creating reference objects."""
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')
    conn = Connection(comb, 'out1', pipeline, 'in1')
    create_ref_TypeError([conn, 7, 'hi'])
    create_ref_TypeError([conn, 'hi', 0])
    create_ref_TypeError([comb, 1, 0])
コード例 #5
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_set_attr_errors():
    """Test errors of set_attr methods."""
    nw = Network(['water', 'air'])
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')
    conn = Connection(comb, 'out1', pipeline, 'in1')
    mybus = Bus('mybus')

    # ValueErrors
    set_attr_ValueError(comb, offdesign=['Q'])

    set_attr_ValueError(conn, offdesign=['f'])

    set_attr_ValueError(nw, m_unit='kg')
    set_attr_ValueError(nw, h_unit='kg')
    set_attr_ValueError(nw, p_unit='kg')
    set_attr_ValueError(nw, T_unit='kg')
    set_attr_ValueError(nw, v_unit='kg')
    set_attr_ValueError(conn, state=5)

    # TypeErrors
    set_attr_TypeError(comb, P=[5])
    set_attr_TypeError(comb, P=[5])
    set_attr_TypeError(comb, tiP_char=7)
    set_attr_TypeError(comb, design='f')
    set_attr_TypeError(comb, lamb=dc_cc())
    set_attr_TypeError(comb, design_path=7)
    set_attr_TypeError(comb, local_design=5)
    set_attr_TypeError(comb, local_offdesign=5)
    set_attr_TypeError(pipeline, hydro_group=5)
    set_attr_TypeError(comb, printout=5)

    set_attr_TypeError(conn, design='h')
    set_attr_TypeError(conn, fluid_balance=1)
    set_attr_TypeError(conn, h0=[4])
    set_attr_TypeError(conn, fluid=5)
    set_attr_TypeError(conn, design_path=5)
    set_attr_TypeError(conn, local_design=5)
    set_attr_TypeError(conn, local_offdesign=5)
    set_attr_TypeError(conn, printout=5)
    set_attr_TypeError(conn, state='f')

    set_attr_TypeError(nw, m_range=5)
    set_attr_TypeError(nw, p_range=5)
    set_attr_TypeError(nw, h_range=5)
    set_attr_TypeError(nw, iterinfo=5)
    set_attr_TypeError(mybus, P='some value')
    set_attr_TypeError(mybus, printout=5)

    # KeyErrors
    set_attr_KeyError(dc_cc(), x=7)
    set_attr_KeyError(comb, wow=5)
    set_attr_KeyError(conn, jey=5)
    set_attr_KeyError(mybus, power_output=100000)

    # NotImplementedError
    set_attr_NotImplementedError(conn, Td_bp=Ref(conn, 1, 0))
コード例 #6
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_Connection_creation_TypeError():
    """Test TypeErrors creating connections."""
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')
    with raises(TypeError):
        Connection(comb, 'out1', 7, 'in1')

    with raises(TypeError):
        Connection(comb, 'out1', pipeline, 'in1', label=5)
コード例 #7
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_Connection_creation_ValueError():
    """Test ValueErrors creating connections."""
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')

    with raises(ValueError):
        Connection(comb, 'out6', pipeline, 'in1')

    with raises(ValueError):
        Connection(comb, 'out1', pipeline, 'in5')
コード例 #8
0
ファイル: test_network.py プロジェクト: oemof/tespy
 def test_Network_max_iter(self):
     """Test reaching maximum iteration count."""
     self.setup_Network_tests()
     pi = Pipe('pipe', pr=1, Q=100e3)
     a = Connection(self.source, 'out1', pi, 'in1', m=1, p=1, T=280,
                    fluid={'water': 1})
     b = Connection(pi, 'out1', self.sink, 'in1')
     self.nw.add_conns(a, b)
     self.nw.solve('design', max_iter=2)
     msg = ('This test must result in the itercount being equal to the max '
            'iter statement.')
     assert self.nw.max_iter == self.nw.iter + 1, msg
コード例 #9
0
ファイル: test_network.py プロジェクト: oemof/tespy
 def test_Network_no_progress(self):
     """Test no convergence progress."""
     self.setup_Network_tests()
     pi = Pipe('pipe', pr=1, Q=-100e3)
     a = Connection(self.source, 'out1', pi, 'in1', m=1, p=1, T=280,
                    fluid={'water': 1})
     b = Connection(pi, 'out1', self.sink, 'in1')
     self.nw.add_conns(a, b)
     self.nw.solve('design')
     msg = ('This test must result in a calculation making no progress, as '
            'the pipe\'s outlet enthalpy is below fluid property range.')
     assert self.nw.progress is False, msg
コード例 #10
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_Bus_add_comps_errors():
    """Test errors adding components to busses."""
    mybus = Bus('mybus')
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')
    conn = Connection(comb, 'out1', pipeline, 'in1')
    bus_add_comps_TypeError(mybus, {'comp': conn})
    bus_add_comps_TypeError(mybus, {'f': comb})
    bus_add_comps_TypeError(mybus, {'comp': comb, 'char': 'Hi'})
    bus_add_comps_TypeError(mybus, {'comp': comb, 'param': 5})
    bus_add_comps_TypeError(mybus, {'comp': comb, 'P_ref': 'what'})
    bus_add_comps_TypeError(mybus, comb)

    with raises(ValueError):
        mybus.add_comps({'comp': comb, 'base': 5})
コード例 #11
0
def pipe_return_definition(df_pipes_data):
    pb = {}

    for index, row in df_pipes_data.iterrows():
        #pipe_name_back = "pipe" + str(row["ID"]) + "_back"
        ks = row["Roughness"]
        L = row["LENGTH"]
        D = row["Diameter"]
        kA = row["Ch"]

        pb[row['ID']] = Pipe("pipe" + str(row["ID"]) + "_back",
                             ks=ks,
                             L=L,
                             D=D,
                             kA=kA)
    return pb
コード例 #12
0
ファイル: test_errors.py プロジェクト: oemof/tespy
def test_get_attr_errors():
    """Test errors of get_attr methods."""
    nw = Network(['water', 'air'])
    comb = CombustionEngine('combustion engine')
    pipeline = Pipe('pipeline')
    conn = Connection(comb, 'out1', pipeline, 'in1')
    mybus = Bus('mybus')
    sub = Subsystem('MySub')

    get_attr_KeyError(comb, 'wow')
    get_attr_KeyError(conn, 'key')
    get_attr_KeyError(mybus, 'components')
    get_attr_KeyError(nw, 'missing')
    get_attr_KeyError(Ref(conn, 1, 0), 'comp')
    get_attr_KeyError(sub, 'test')
    get_attr_KeyError(CharLine(), 'test')
    get_attr_KeyError(DataContainer(), 'somekey')
    get_attr_KeyError(CharMap(), 'Stuff')
コード例 #13
0
ファイル: custom_vars.py プロジェクト: oemof/oemof-examples
# -*- coding: utf-8 -*-
from tespy.connections import Connection
from tespy.components import Source, Sink, Pipe
from tespy.networks import Network
from tespy.tools import document_model

import numpy as np
from matplotlib import pyplot as plt

nw = Network(['water'], p_unit='bar', T_unit='C', h_unit='kJ / kg')

# %% components
pi = Pipe('pipe')
si = Sink('sink')
so = Source('source')

# %% connections

a = Connection(so, 'out1', pi, 'in1')
b = Connection(pi, 'out1', si, 'in1')

nw.add_conns(a, b)

# %% connection parameters

a.set_attr(h=40, fluid={'water': 1}, p=1, m=10)


# %% component parameters

pi.set_attr(ks=1e-5, L=100, D='var', Q=0)
コード例 #14
0
ファイル: dhs.py プロジェクト: nadine1809/oemof-examples
# sources and sinks

so = Source('source')
si = Sink('sink')

so1 = Source('source1')
si1 = Sink('sink1')

so2 = Source('source2')
si2 = Sink('sink2')

# %% construction part

# pipe_feed

pif1 = Pipe('pipe1_feed', ks=7e-5, L=50, D=0.15, offdesign=['kA_char'])
pif2 = Pipe('pipe2_feed', ks=7e-5, L=200, D=0.15, offdesign=['kA_char'])

pif4 = Pipe('pipe4_feed', ks=7e-5, L=50, D=0.15, offdesign=['kA_char'])
pif7 = Pipe('pipe7_feed', ks=7e-5, L=175, D=0.15, offdesign=['kA_char'])

pif8 = Pipe('pipe8_feed', ks=7e-5, L=75, D=0.15, offdesign=['kA_char'])
pif10 = Pipe('pipe10_feed', ks=7e-5, L=450, D=0.1, offdesign=['kA_char'])

pif11 = Pipe('pipe11_feed', ks=7e-5, L=60, D=0.04, offdesign=['kA_char'])
pif16 = Pipe('pipe16_feed', ks=7e-5, L=30, D=0.065, offdesign=['kA_char'])

pif17 = Pipe('pipe17_feed', ks=7e-5, L=250, D=0.065, offdesign=['kA_char'])
pif21 = Pipe('pipe21_feed', ks=7e-5, L=30, D=0.04, offdesign=['kA_char'])

# pipe_back
コード例 #15
0
ファイル: test_piping.py プロジェクト: oemof/tespy
 def test_Pipe(self):
     """Test component properties of pipe."""
     instance = Pipe('pipe')
     self.setup_piping_network(instance)