Commit 7fb785c6 authored by Villez, Kris's avatar Villez, Kris
Browse files

minor mods

parent 48ea0468
Loading
Loading
Loading
Loading
+453 −179
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import sympy as sy
import os
import sys

module_path = os.path.join(os.path.dirname(os.path.abspath('')))
module_path = os.path.join(os.path.dirname(os.path.abspath("")))
if module_path not in sys.path:
    sys.path.insert(0, module_path)
else:
@@ -10,6 +10,7 @@ else:

from numerical_labelling.constraints import *


def constr_minimal():
    """
    minimal example: membrane, 6 streams, recycle
@@ -19,37 +20,44 @@ def constr_minimal():
    coeff_sys: list of the constant coefficients
    """

    m1, m2, m3, m4, m5, m6 = sy.symbols(
        "m1 m2 m3 m4 m5 m6"
    )
    x1, x2, x3, x4, x5, x6= sy.symbols(
        "x1 x2 x3 x4 x5 x6"
    )
    p1, p2, p3, p4, p5, p6 = sy.symbols(
        "p1 p2 p3 p4 p5 p6"
    )
    m1, m2, m3, m4, m5, m6 = sy.symbols("m1 m2 m3 m4 m5 m6")
    x1, x2, x3, x4, x5, x6 = sy.symbols("x1 x2 x3 x4 x5 x6")
    p1, p2, p3, p4, p5, p6 = sy.symbols("p1 p2 p3 p4 p5 p6")
    varbs_list_sys = [
        m1, m2, m3, m4, m5, m6,
        x1, x2, x3, x4, x5, x6,
        p1, p2, p3, p4, p5, p6,
        m1,
        m2,
        m3,
        m4,
        m5,
        m6,
        x1,
        x2,
        x3,
        x4,
        x5,
        x6,
        p1,
        p2,
        p3,
        p4,
        p5,
        p6,
    ]
    varbs_sys = {varb.name: varb for varb in varbs_list_sys}

    # membrane constants
    a1, a1p, a1pp = sy.symbols(
        'a1 a1p a1pp'
    )
    b1, b1p = sy.symbols(
        'b1 b1p'
    )
    c1, c1p = sy.symbols(
        'c1 c1p'
    )
    a1, a1p, a1pp = sy.symbols("a1 a1p a1pp")
    b1, b1p = sy.symbols("b1 b1p")
    c1, c1p = sy.symbols("c1 c1p")

    coeff_sys_list = [
        a1, a1p, a1pp,
        b1, b1p,
        c1, c1p,
        a1,
        a1p,
        a1pp,
        b1,
        b1p,
        c1,
        c1p,
    ]

    coeff_sys = {coeff.name: coeff for coeff in coeff_sys_list}
@@ -59,34 +67,59 @@ def constr_minimal():
    sltns_sys = {}

    constr_sys, sltns_sys = constr_mix_21(
        min1=m1, min2=m6, mout=m2,
        xin1=x1, xin2=x6, xout=x2,
        pin1=p1, pin2=p6, pout=p2,
        constr=constr_sys, sltns=sltns_sys,
        min1=m1,
        min2=m6,
        mout=m2,
        xin1=x1,
        xin2=x6,
        xout=x2,
        pin1=p1,
        pin2=p6,
        pout=p2,
        constr=constr_sys,
        sltns=sltns_sys,
    )


    # membrane 1
    constr_sys, sltns_sys = constr_mex(
        mfeed=m2, mperm=m3, mret=m4,
        xfeed=x2, xperm=x3, xret=x4,
        pfeed=p2, pperm=p3, pret=p4,
        a=a1, ap=a1p, app=a1pp,
        b=b1, bp=b1p,
        c=c1, cp=c1p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m2,
        mperm=m3,
        mret=m4,
        xfeed=x2,
        xperm=x3,
        xret=x4,
        pfeed=p2,
        pperm=p3,
        pret=p4,
        a=a1,
        ap=a1p,
        app=a1pp,
        b=b1,
        bp=b1p,
        c=c1,
        cp=c1p,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    # split point
    constr_sys, sltns_sys = constr_split(
        min=m4, mout1=m5, mout2=m6,
        xin=x4, xout1=x5, xout2=x6,
        pin=p4, pout1=p5, pout2=p6,
        constr=constr_sys, sltns=sltns_sys
        min=m4,
        mout1=m5,
        mout2=m6,
        xin=x4,
        xout1=x5,
        xout2=x6,
        pin=p4,
        pout1=p5,
        pout2=p6,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    return constr_sys, varbs_sys, coeff_sys


def constr_ccro():
    """
    returns
@@ -95,41 +128,67 @@ def constr_ccro():
    coeff_sys: list of the constant coefficients
    """

    m1, m2, m3, m4, m5, m6, m7, m8 = sy.symbols(
        "m1 m2 m3 m4 m5 m6 m7 m8"
    )
    x1, x2, x3, x4, x5, x6, x7, x8 = sy.symbols(
        "x1 x2 x3 x4 x5 x6 x7 x8"
    )
    p1, p2, p3, p4, p5, p6, p7, p8 = sy.symbols(
        "p1 p2 p3 p4 p5 p6 p7 p8"
    )
    m1, m2, m3, m4, m5, m6, m7, m8, m9 = sy.symbols("m1 m2 m3 m4 m5 m6 m7 m8 m9")
    x1, x2, x3, x4, x5, x6, x7, x8, x9 = sy.symbols("x1 x2 x3 x4 x5 x6 x7 x8 x9")
    p1, p2, p3, p4, p5, p6, p7, p8, p9 = sy.symbols("p1 p2 p3 p4 p5 p6 p7 p8 p9")
    varbs_list_sys = [
        m1, m2, m3, m4, m5, m6, m7, m8,
        x1, x2, x3, x4, x5, x6, x7, x8,
        p1, p2, p3, p4, p5, p6, p7, p8,
        m1,
        m2,
        m3,
        m4,
        m5,
        m6,
        m7,
        m8,
        m9,
        x1,
        x2,
        x3,
        x4,
        x5,
        x6,
        x7,
        x8,
        x9,
        p1,
        p2,
        p3,
        p4,
        p5,
        p6,
        p7,
        p8,
        p9,
    ]
    varbs_sys = {varb.name: varb for varb in varbs_list_sys}

    # membrane constants
    a1, a1p, a1pp = sy.symbols(
        'a1 a1p a1pp'
    )
    b1, b1p = sy.symbols(
        'b1 b1p'
    )
    c1, c1p = sy.symbols(
        'c1 c1p'
    )
    a1, a1p, a1pp = sy.symbols("a1 a1p a1pp")
    b1, b1p = sy.symbols("b1 b1p")
    c1, c1p = sy.symbols("c1 c1p")

    # pump constants
    e1, h1, g1, j1, e2, h2, g2, j2 = sy.symbols("e1 h1 g1 j1 e2 h2 g2 j2")

    # valve constants
    k1, l1 = sy.symbols("k1, l1")

    coeff_sys_list = [
        a1, a1p, a1pp,
        b1, b1p,
        c1, c1p,
        e1, h1, g1, j1, e2, h2, g2, j2,
        a1,
        a1p,
        a1pp,
        b1,
        b1p,
        c1,
        c1p,
        e1,
        h1,
        g1,
        j1,
        e2,
        h2,
        g2,
        j2,
    ]

    coeff_sys = {coeff.name: coeff for coeff in coeff_sys_list}
@@ -139,46 +198,97 @@ def constr_ccro():
    sltns_sys = {}

    constr_sys, sltns_sys = constr_pump(
        min = m1, mout=m2, 
        xin=x1, xout = x2,
        pin=p1, pout=p2,
        E=e1, H = h1, G = g1, J= j1,
        constr = constr_sys, sltns=sltns_sys,
        min=m1,
        mout=m2,
        xin=x1,
        xout=x2,
        pin=p1,
        pout=p2,
        E=e1,
        H=h1,
        G=g1,
        J=j1,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    constr_sys, sltns_sys = constr_mix_21(
        min1=m2, min2=m8, mout=m3,
        xin1=x2, xin2=x8, xout=x3,
        pin1=p2, pin2=p8, pout=p3,
        constr=constr_sys, sltns=sltns_sys,
        min1=m2,
        min2=m7,
        mout=m3,
        xin1=x2,
        xin2=x7,
        xout=x3,
        pin1=p2,
        pin2=p7,
        pout=p3,
        constr=constr_sys,
        sltns=sltns_sys,
    )


    # membrane 1
    constr_sys, sltns_sys = constr_mex(
        mfeed=m3, mperm=m4, mret=m5,
        xfeed=x3, xperm=x4, xret=x5,
        pfeed=p3, pperm=p4, pret=p5,
        a=a1, ap=a1p, app=a1pp,
        b=b1, bp=b1p,
        c=c1, cp=c1p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m3,
        mperm=m4,
        mret=m5,
        xfeed=x3,
        xperm=x4,
        xret=x5,
        pfeed=p3,
        pperm=p4,
        pret=p5,
        a=a1,
        ap=a1p,
        app=a1pp,
        b=b1,
        bp=b1p,
        c=c1,
        cp=c1p,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    constr_sys, sltns_sys = constr_pump(
        min=m5,
        mout=m6,
        xin=x5,
        xout=x6,
        pin=p5,
        pout=p6,
        E=e2,
        H=h2,
        G=g2,
        J=j2,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    # split point
    constr_sys, sltns_sys = constr_split(
        min=m5, mout1=m6, mout2=m7,
        xin=x5, xout1=x6, xout2=x7,
        pin=p5, pout1=p6, pout2=p7,
        constr=constr_sys, sltns=sltns_sys
        min=m6,
        mout1=m7,
        mout2=m8,
        xin=x6,
        xout1=x7,
        xout2=x8,
        pin=p6,
        pout1=p7,
        pout2=p8,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    constr_sys, sltns_sys = constr_pump(
        min=m7, mout=m8, 
        xin=x7, xout = x8,
        pin=p7, pout=p8,
        E=e2, H = h2, G = g2, J= j2,
        constr = constr_sys, sltns=sltns_sys,
    constr_sys, sltns_sys = constr_valve(
        min=m8,
        mout=m9,
        xin=x8,
        xout=x9,
        pin=p8,
        pout=p9,
        K=k1,
        L=l1,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    return constr_sys, varbs_sys, coeff_sys
@@ -191,41 +301,115 @@ def constr_pilot():
    varbs_sys: list of the process variables (flow, concentration, pressure)
    coeff_sys: list of the constant coefficients
    """
    m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17 = sy.symbols(
        "m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m17"
    m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17 = (
        sy.symbols("m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m17")
    )
    x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17 = sy.symbols(
        "x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17"
    x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17 = (
        sy.symbols("x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17")
    )
    p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17 = sy.symbols(
        "p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17"
    p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17 = (
        sy.symbols("p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17")
    )
    varbs_list_sys = [
        m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17,
        x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17,
        p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17,
        m1,
        m2,
        m3,
        m4,
        m5,
        m6,
        m7,
        m8,
        m9,
        m10,
        m11,
        m12,
        m13,
        m14,
        m15,
        m16,
        m17,
        x1,
        x2,
        x3,
        x4,
        x5,
        x6,
        x7,
        x8,
        x9,
        x10,
        x11,
        x12,
        x13,
        x14,
        x15,
        x16,
        x17,
        p1,
        p2,
        p3,
        p4,
        p5,
        p6,
        p7,
        p8,
        p9,
        p10,
        p11,
        p12,
        p13,
        p14,
        p15,
        p16,
        p17,
    ]
    varbs_sys = {varb.name: varb for varb in varbs_list_sys}

    # membrane constants
    a1, a1p, a1pp, a2, a2p, a2pp, a3, a3p, a3pp, a4, a4p, a4pp = sy.symbols(
        'a1 a1p a1pp a2 a2p a2pp a3 a3p a3pp a4 a4p a4pp'
    )
    b1, b1p, b2, b2p, b3, b3p, b4, b4p = sy.symbols(
        'b1 b1p, b2 b2p b3 b3p b4 b4p'
    )
    c1, c1p, c2, c2p, c3, c3p, c4, c4p = sy.symbols(
        'c1 c1p c2 c2p c3 c3p c4 c4p'
        "a1 a1p a1pp a2 a2p a2pp a3 a3p a3pp a4 a4p a4pp"
    )
    b1, b1p, b2, b2p, b3, b3p, b4, b4p = sy.symbols("b1 b1p, b2 b2p b3 b3p b4 b4p")
    c1, c1p, c2, c2p, c3, c3p, c4, c4p = sy.symbols("c1 c1p c2 c2p c3 c3p c4 c4p")

    # pump constants
    e1, h1, g1, j1, k1, l1 = sy.symbols("e1 h1 g1 j1 k1 l1")

    coeff_sys_list = [
        a1, a1p, a1pp, a2, a2p, a2pp, a3, a3p, a3pp, a4, a4p, a4pp,
        b1, b1p, b2, b2p, b3, b3p, b4, b4p,
        c1, c1p, c2, c2p, c3, c3p, c4, c4p,
        e1, h1, g1, j1, k1, l1
        a1,
        a1p,
        a1pp,
        a2,
        a2p,
        a2pp,
        a3,
        a3p,
        a3pp,
        a4,
        a4p,
        a4pp,
        b1,
        b1p,
        b2,
        b2p,
        b3,
        b3p,
        b4,
        b4p,
        c1,
        c1p,
        c2,
        c2p,
        c3,
        c3p,
        c4,
        c4p,
        e1,
        h1,
        g1,
        j1,
        k1,
        l1,
    ]

    coeff_sys = {coeff.name: coeff for coeff in coeff_sys_list}
@@ -234,95 +418,185 @@ def constr_pilot():
    constr_sys = {}
    sltns_sys = {}
    constr_sys, sltns_sys = constr_mix_21(
        min1=m1, min2=m17, mout=m2,
        xin1=x1, xin2=x17, xout=x2,
        pin1=p1, pin2=p17, pout=p2,
        constr=constr_sys, sltns=sltns_sys,
        min1=m1,
        min2=m17,
        mout=m2,
        xin1=x1,
        xin2=x17,
        xout=x2,
        pin1=p1,
        pin2=p17,
        pout=p2,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    constr_sys, sltns_sys = constr_pump(
        min = m2, mout=m3, 
        xin=x2, xout = x3,
        pin=p2, pout=p3,
        E=e1, H = h1, G = g1, J= j1,
        constr = constr_sys, sltns=sltns_sys,
        min=m2,
        mout=m3,
        xin=x2,
        xout=x3,
        pin=p2,
        pout=p3,
        E=e1,
        H=h1,
        G=g1,
        J=j1,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    # membrane 1
    constr_sys, sltns_sys = constr_mex(
        mfeed=m3, mperm=m4, mret=m5,
        xfeed=x3, xperm=x4, xret=x5,
        pfeed=p3, pperm=p4, pret=p5,
        a=a1, ap=a1p, app=a1pp,
        b=b1, bp=b1p,
        c=c1, cp=c1p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m3,
        mperm=m4,
        mret=m5,
        xfeed=x3,
        xperm=x4,
        xret=x5,
        pfeed=p3,
        pperm=p4,
        pret=p5,
        a=a1,
        ap=a1p,
        app=a1pp,
        b=b1,
        bp=b1p,
        c=c1,
        cp=c1p,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    # membrane 2
    constr_sys, sltns_sys = constr_mex(
        mfeed=m5, mperm=m6, mret=m8,
        xfeed=x5, xperm=x6, xret=x8,
        pfeed=p5, pperm=p6, pret=p8,
        a=a2, ap=a2p, app=a2pp,
        b=b2, bp=b2p,
        c=c2, cp=c2p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m5,
        mperm=m6,
        mret=m8,
        xfeed=x5,
        xperm=x6,
        xret=x8,
        pfeed=p5,
        pperm=p6,
        pret=p8,
        a=a2,
        ap=a2p,
        app=a2pp,
        b=b2,
        bp=b2p,
        c=c2,
        cp=c2p,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    # membrane 3
    constr_sys, sltns_sys = constr_mex(
        mfeed=m8, mperm=m9, mret=m11,
        xfeed=x8, xperm=x9, xret=x11,
        pfeed=p8, pperm=p9, pret=p11,
        a=a3, ap=a3p, app=a3pp,
        b=b3, bp=b3p,
        c=c3, cp=c3p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m8,
        mperm=m9,
        mret=m11,
        xfeed=x8,
        xperm=x9,
        xret=x11,
        pfeed=p8,
        pperm=p9,
        pret=p11,
        a=a3,
        ap=a3p,
        app=a3pp,
        b=b3,
        bp=b3p,
        c=c3,
        cp=c3p,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    # membrane 4
    constr_sys, sltns_sys = constr_mex(
        mfeed=m11, mperm=m12, mret=m14,
        xfeed=x11, xperm=x12, xret=x14,
        pfeed=p11, pperm=p12, pret=p14,
        a=a4, ap=a4p, app=a4pp,
        b=b4, bp=b4p,
        c=c4, cp=c4p,
        constr=constr_sys, sltns=sltns_sys,
        mfeed=m11,
        mperm=m12,
        mret=m14,
        xfeed=x11,
        xperm=x12,
        xret=x14,
        pfeed=p11,
        pperm=p12,
        pret=p14,
        a=a4,
        ap=a4p,
        app=a4pp,
        b=b4,
        bp=b4p,
        c=c4,
        cp=c4p,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    # mixing points
    constr_sys, sltns_sys = constr_mix_21(
        min1=m4, min2=m6, mout=m7,
        xin1=x4, xin2=x6, xout=x7,
        pin1=p4, pin2=p6, pout=p7,
        constr=constr_sys, sltns=sltns_sys
        min1=m4,
        min2=m6,
        mout=m7,
        xin1=x4,
        xin2=x6,
        xout=x7,
        pin1=p4,
        pin2=p6,
        pout=p7,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    constr_sys, sltns_sys = constr_mix_21(
        min1=m7, min2=m9, mout=m10,
        xin1=x7, xin2=x9, xout=x10,
        pin1=p7, pin2=p9, pout=p10,
        constr=constr_sys, sltns=sltns_sys
        min1=m7,
        min2=m9,
        mout=m10,
        xin1=x7,
        xin2=x9,
        xout=x10,
        pin1=p7,
        pin2=p9,
        pout=p10,
        constr=constr_sys,
        sltns=sltns_sys,
    )
    constr_sys, sltns_sys = constr_mix_21(
        min1=m10, min2=m12, mout=m13,
        xin1=x10, xin2=x12, xout=x13,
        pin1=p10, pin2=p12, pout=p13,
        constr=constr_sys, sltns=sltns_sys
        min1=m10,
        min2=m12,
        mout=m13,
        xin1=x10,
        xin2=x12,
        xout=x13,
        pin1=p10,
        pin2=p12,
        pout=p13,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    # split point
    constr_sys, sltns_sys = constr_split(
        min=m14, mout1=m15, mout2=m16,
        xin=x14, xout1=x15, xout2=x16,
        pin=p14, pout1=p15, pout2=p16,
        constr=constr_sys, sltns=sltns_sys
        min=m14,
        mout1=m15,
        mout2=m16,
        xin=x14,
        xout1=x15,
        xout2=x16,
        pin=p14,
        pout1=p15,
        pout2=p16,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    constr_sys, sltns_sys = constr_valve(
        min=m16, mout=m17,
        xin=x16, xout=x17,
        pin=p16, pout=p17,
        K=k1,L=l1,
        constr=constr_sys, sltns=sltns_sys,
        min=m16,
        mout=m17,
        xin=x16,
        xout=x17,
        pin=p16,
        pout=p17,
        K=k1,
        L=l1,
        constr=constr_sys,
        sltns=sltns_sys,
    )

    return constr_sys, varbs_sys, coeff_sys