Source code for x_examples.e03_serial

'''
  e03_serial.py

  Demonstrates serial and parallel composition components.
  Includes generic Parallel and the dedicated Parallel2 variant.
'''
# =============================================================================
# PYLINT DIRECTIVES
# =============================================================================
# pylint: disable=no-member,no-name-in-module,invalid-name,wrong-import-position

# =============================================================================
# EXTERNAL MODULE REFERENCES
# =============================================================================
import fluidsolve as fls
# UNITS
u         = fls.unitRegistry
Quantity  = fls.Quantity  # type: ignore[misc]

# =============================================================================
# FUNCS
# =============================================================================
[docs] def PrintIt(comp, flow): '''Print component hydraulic details for a given flow.''' print(f'{comp}') try: print(f'K={comp.calcK(flow, 1).magnitude:.2f}') except Exception: print('K= not available') print(f'with Q={flow:.2f~P}: H={comp.calcH(flow, 1):.2f~P} P={comp.calcP(flow, 1):.2f~P}')
# ============================================================================= # MAIN # ============================================================================= if __name__ == '__main__': mu = 0.001 * u.Pa*u.s rho = 1000 * u.kg/u.m**3 e = 0.01 * u.mm dia1 = 50 *u.mm dia2 = 25 *u.mm L1 = 15 * u.m L2 = 50 * u.m v = 3 *u.m/u.s Q = fls.vtoQ(v, dia1) # fls.initFluidsolve( default_medium = fls.Medium(name='test', mu=mu, rho=rho, k=fls.Medium(prd='water').k), default_material = fls.Material(e=e), ) c0 = fls.getComp(comp='Tube', L=L1, D=dia1) c1 = fls.getComp(comp='Tube', L=L2, D=dia2) c2 = fls.getComp(comp='Tube', L=L2, D=dia2) comp_serial = fls.getComp(comp='Serial') comp_serial.addComp(c0) comp_serial.addComp(c1) comp_parallel = fls.getComp(comp='Parallel') comp_parallel.addComp(c0) comp_parallel.addComp(c1) comp_parallel.calcH(Q, 1) comp_parallel2 = fls.getComp(comp='Parallel2') comp_parallel2.addComp(c0) comp_parallel2.addComp(c1) # print('-------------\n') print('Detail of all components:') PrintIt(c0, Q) PrintIt(c1, Q) print('-------------\n') print('Total (serial) component:') PrintIt(comp_serial, Q) print ('Calculate profile (Q en H after every item, individual and incremental):') pts_indiv = comp_serial.calcHprofile(Q, sense=1, incr=False) pts_incr = comp_serial.calcHprofile(Q, sense=1, incr=True) for i, pt_indiv in enumerate(pts_indiv): print(f'{pt_indiv} \t\t {pts_incr[i]}') print('-------------\n') print('Total (parallel) component:') PrintIt(comp_parallel, Q) print ('Q en H for every item:') for i in range(len(comp_parallel.components)): print(f'Component {comp_parallel.getComp(i).name}: Q={comp_parallel.getQ()[i]:.2f~P} H={comp_parallel.getH()[i]:.2f~P}') print('-------------\n') print('Total (parallel2) component:') PrintIt(comp_parallel2, Q) print ('Q en H for every item:') print(f'Component {comp_parallel2.getComp(0).name}: Q={comp_parallel2.getQ()[0]:.2f~P} H={comp_parallel2.getH()[0]:.2f~P}') print(f'Component {comp_parallel2.getComp(1).name}: Q={comp_parallel2.getQ()[1]:.2f~P} H={comp_parallel2.getH()[1]:.2f~P}')