Loading testing/generate_numerical_system.py +453 −179 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -10,6 +10,7 @@ else: from numerical_labelling.constraints import * def constr_minimal(): """ minimal example: membrane, 6 streams, recycle Loading @@ -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} Loading @@ -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 Loading @@ -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} Loading @@ -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 Loading @@ -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} Loading @@ -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 Loading
testing/generate_numerical_system.py +453 −179 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -10,6 +10,7 @@ else: from numerical_labelling.constraints import * def constr_minimal(): """ minimal example: membrane, 6 streams, recycle Loading @@ -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} Loading @@ -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 Loading @@ -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} Loading @@ -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 Loading @@ -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} Loading @@ -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