diff --git a/.idea/aide_design.iml b/.idea/aide_design.iml index 6f63a63c..67f2c8bc 100644 --- a/.idea/aide_design.iml +++ b/.idea/aide_design.iml @@ -2,7 +2,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index ef11d875..bc567916 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/preferred-vcs.xml b/.idea/preferred-vcs.xml new file mode 100644 index 00000000..848cfc44 --- /dev/null +++ b/.idea/preferred-vcs.xml @@ -0,0 +1,6 @@ + + + + ApexVCS + + \ No newline at end of file diff --git a/Research/HumicAcidData_Yingda.py b/Research/HumicAcidData_Yingda.py deleted file mode 100644 index eae408f7..00000000 --- a/Research/HumicAcidData_Yingda.py +++ /dev/null @@ -1,148 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Tue Aug 8 16:00:38 2017 - -@author: Sage Weber-Shirk - -Last modified: Thu Aug 10 2016 -By: Sage Weber-Shirk -""" - -import numpy as np -import pandas as pd -from matplotlib import pyplot as plt - -try: - from AguaClara_design.units import unit_registry as u - from AguaClara_design import floc_model as floc -except ModuleNotFoundError: - try: - import floc_model as floc - from units import unit_registry as u - except ModuleNotFoundError: - import sys, os - GitPath = os.path.join('~', 'Documents', 'GitHub') - myGitHubdir=os.path.expanduser(GitPath) - sys.path.append(myGitHubdir) - from AguaClara_design.units import unit_registry as u - from AguaClara_design import floc_model as floc - -k = 0.24 -coag = np.array([0.53, 1.06, 1.59, 2.11, 2.56]) * u.mg/u.L -conc_humic_acid = np.array([0, 3, 6, 9, 12, 15] * u.mg/u.L) -# dataset[0] is the 50NTU, dataset[1] is the 100NTU. -# Within both subgroups, [0] is the pC.0, ranging evenly up to [5] which is the -# pC.15 -dataset = np.array([[ # Dataset[0]: the 50NTU datasets - [0.634, 0.729, 0.891, 1.062, 1.205], - [0.563, 0.717, 0.903, 1.038, 1.193], - [0.136, 0.513, 0.793, 1.027, 1.095], - [0.109, 0.264, 0.749, 1.002, 1.089], - [0.084, 0.128, 0.647, 0.962, 1.057], - [0.061, 0.094, 0.308, 0.717, 0.928] - ], - [ # Dataset[1]: the 100NTU datasets - [0.746, 0.953, 1.191, 1.295, 1.414], - [0.563, 0.835, 1.085, 1.255, 1.403], - [0.185, 0.692, 0.971, 1.254, 1.390], - [0.105, 0.280, 0.956, 1.238, 1.361], - [0.097, 0.207, 0.740, 1.209, 1.316], - [0.084, 0.157, 0.566, 1.084, 1.314] - ] - ]) -indexnames = ['{0} mg/L'.format(i) for i in np.arange(0,16,3)] -Data50NTU = pd.DataFrame(dataset[0], index=indexnames).T - -Data100NTU = pd.DataFrame(dataset[1], index=indexnames).T -print(Data50NTU) - -coagGraph = np.arange(1 * 10**-4, 25.1 * 10**-4, 1 * 10**-4) * u.kg/u.m**3 -enerDis = 4.833 * u.mW/u.kg -temperature = 25 * u.degC -resTime = 302 * u.s -tubeDiam = 3/8 * u.inch -# Begin graphing the 50NTU datasets -plt.figure('50NTU', (6,6)) -plt.title('50 NTU Graph') -plt.ylabel('pC*') -plt.xlabel('coagulant dosage (mg/L)') - - -plt.plot(coag, Data50NTU['0 mg/L'], 'r.', coag, Data50NTU['3 mg/L'], 'b.', - coag, Data50NTU['6 mg/L'], 'g.', coag, Data50NTU['9 mg/L'], 'm.', - coag, Data50NTU['12 mg/L'], 'c.', coag, Data50NTU['12 mg/L'], 'y.') - -# I wish there was a cleaner way to assign these but I can't think -# of what it would be. -line0mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 0 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line3mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 3 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line6mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 6 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line9mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 9 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line12mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 12 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line15mg50 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 50 * u.NTU, coagGraph, 15 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) - -x = coagGraph.to(u.mg/u.L) -plt.plot(x, line0mg50, 'r', x, line3mg50, 'b', x, line6mg50, 'g', - x, line9mg50, 'm', x, line12mg50, 'c', x, line15mg50, 'y') - - -# Begin graphing the 100NTU datasets -plt.figure('100NTU', (6,6)) -plt.title('100 NTU Graph') -plt.ylabel('pC*') -plt.xlabel('coagulant dosage (mg/L)') - -plt.plot(coag, Data100NTU['0 mg/L'], 'r.', coag, Data100NTU['3 mg/L'], 'b.', - coag, Data100NTU['6 mg/L'], 'g.', coag, Data100NTU['9 mg/L'], 'm.', - coag, Data100NTU['12 mg/L'], 'c.', coag, Data100NTU['15 mg/L'], 'y.') - -line0mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 0 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line3mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 3 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line6mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 6 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line9mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 9 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line12mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 12 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) -line15mg100 = floc.pc_viscous(enerDis, temperature, resTime, tubeDiam, - 100 * u.NTU, coagGraph, 15 * u.mg/u.L, - floc.HumicAcid, floc.PACl, floc.Clay, - k, floc.RATIO_HEIGHT_DIAM) - -x = coagGraph.to(u.mg/u.L) -plt.plot(x, line0mg100, 'r', x, line3mg100, 'b', x, line6mg100, 'g', - x, line9mg100, 'm', x, line12mg100, 'c', x, line15mg100, 'y') - - -# And now we display our graph! -plt.show() diff --git a/aide_design/Tutorial of Coagulant and Clay System Design for Coiled Flocculator.ipynb b/aide_design/Tutorial of Coagulant and Clay System Design for Coiled Flocculator.ipynb deleted file mode 100644 index d6e7113f..00000000 --- a/aide_design/Tutorial of Coagulant and Clay System Design for Coiled Flocculator.ipynb +++ /dev/null @@ -1,283 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 144, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "######################### Imports ########################\n", - "import math\n", - "import numpy as np\n", - "\n", - "try:\n", - " import utility as ut\n", - " from units import unit_registry as u\n", - "except ModuleNotFoundError:\n", - " from AIDE import utility as ut\n", - " from AIDE.units import unit_registry as u\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tutorial of Coagulant and Clay System Design for Coiled Flocculator" - ] - }, - { - "cell_type": "code", - "execution_count": 145, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#This pump rotor radius was set based on minimizing the error between predicted and measured values.\n", - "# This is for the 6 roller pump heads.\n", - "RADIUS_PUMP = 1.62*u.cm\n", - "\n", - "#This corrects for the fact that larger diameter tubing has more loss due to the space smashed by the rollers\n", - "#I'm actually not quite sure what this mechanism is..\n", - "#This was set based on minimizing the error between predicted and measured values.\n", - "K_NONLINEAR = 13\n", - "\n", - "REV = 6.238" - ] - }, - { - "cell_type": "code", - "execution_count": 146, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "TUBE_CODE = [\"orange=black\",\"orange-red\",\"orange-blue\",\"orange-green\",\"green-yellow\",\"orange-yellow\",\"white-yellow\",\"orange-white\",\"black-black\",\"orange-orange\",\"white-black\",\"white-white\",\"white-red\",\"red-red\",\"red-grey\",\"grey-grey\",\"yellow-yellow\",\"yellow-blue\",\"blue-blue\",\"blue-green\",\"green-green\",\"purple-purple\",\"purple-black\",\"purple-orange\",\"purple-orange\",\"purple-white\",\"black-white\"]\n", - "\n", - "ID_TUBE_ARRAY = [0.13,0.19,0.25,0.38,0.44,0.51,0.57,0.64,0.76,0.89,0.95,1.02,1.09,1.14,1.22,1.30,1.42,1.52,1.65,1.75,1.85,2.06,2.29,2.54,2.62,2.79,3.17]*u.mm\n", - "\n", - "FLOW_TUBE_PER_REV = [0.001383333,0.002833333,0.004833333,0.010833333,0.014333333,0.02,0.023333333,0.03,0.041666667,0.056666667,0.063333333,0.073333333,0.083333333,0.09,0.101666667,0.115,0.133333333,0.151666667,0.166666667,0.183333333,0.216666667,0.25,0.283333333,0.333333333,0.366666667,0.401,0.433333333]*u.mL/REV\n", - "\n", - "TUBING_DATA = [TUBE_CODE, ID_TUBE_ARRAY, FLOW_TUBE_PER_REV]" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#The function below returns the flow per revolution given the ID of the 3-stop tubing.\n", - "#This function returns values that are very close to the table produced by ismatec.\n", - "\n", - "def flow_6roller_tube_per_rev_calc(ID_tube):\n", - " \"\"\"returns the flow per revolution given the ID of the 3-stop tubing.\n", - " This function returns values that are very close to the table produced by ismatec.\"\"\"\n", - " \n", - " return (((RADIUS_PUMP*math.pi*2)-(K_NONLINEAR*ID_tube))/(REV)*((ID_tube)**2*math.pi/4))\n", - "\n", - "#In the lab we currently have orange-yellow, yellow-blue, and purple-white tubing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Determining Q.floc:" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "FLOW_PLANT = 7*u.mL/u.s" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mixing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Clay" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#Turbidity (NTU) of the expected influen\n", - "NTU = 1.7*u.mg/u.L\n", - "\n", - "#The concentration of clay in the mixed water in the flocculator.\n", - "CONC_CLAY = 100*NTU\n", - "\n", - "#This is for a 100 rpm pump and is designed to get the pump operating \n", - "#at an rpm where it has good speed control\n", - "#and it has the ability to be adjusted up or down as needed. \n", - "#Some of our pumps have a minimum speed of about 2.3 rpm.\n", - "MIN_RPM = 3*REV/u.min\n", - "MAX_RPM = 95*REV/u.min\n", - "\n", - "CLAY_TUBING_COLORS = \"yellow-blue\" #yellow blue tubing\n", - "\n", - "ID_CLAY_TUBING = ID_TUBE_ARRAY[TUBE_CODE.index(CLAY_TUBING_COLORS)]\n", - "\n", - "CONC_CLAY_STOCK_MAX = CONC_CLAY*FLOW_PLANT/(flow_6roller_tube_per_rev_calc(ID_CLAY_TUBING)*MIN_RPM)\n", - "\n", - "CONC_CLAY_STOCK_MAX = ((CONC_CLAY_STOCK_MAX).to(u.g/u.L))\n", - "\n", - "CLAY_STOCK_MAX_EMPIRICAL = 300*u.g/u.L\n", - "\n", - "#Clay stock concentrations of up to 300 g/L have been tested and are able to be pumped\n", - "\n", - "CONC_CLAY_STOCK_MIN = CONC_CLAY*FLOW_PLANT/(flow_6roller_tube_per_rev_calc(ID_CLAY_TUBING)*MAX_RPM)\n", - "\n", - "CONC_CLAY_STOCK_MIN = ((CONC_CLAY_STOCK_MIN).to(u.g/u.L))\n", - "\n", - "#The concentration of clay in the stock bottle.\n", - "#You can change this to make sure the designed velocity for the \n", - "#clay pump is within the range of velocity of the pump.\n", - "clay_param = 10**((math.floor(math.log10(min(CONC_CLAY_STOCK_MAX,CLAY_STOCK_MAX_EMPIRICAL).magnitude)))-1)\n", - "clay_param2 = min(CONC_CLAY_STOCK_MAX,CLAY_STOCK_MAX_EMPIRICAL)/clay_param\n", - "CONC_CLAY_STOCK = math.floor(clay_param2.magnitude)*(clay_param)\n", - "CONC_CLAY_STOCK = CONC_CLAY_STOCK*(u.g/u.L)\n", - "\n", - "#The volume of container which holds clay suspension. \n", - "VOLUME_CLAY_STOCK = 1*u.L\n", - "\n", - "#The mass of clay that we need to add into the stock container\n", - "MASS_STOCK_CLAY = CONC_CLAY_STOCK*VOLUME_CLAY_STOCK\n", - "\n", - "#Flow rate of clay suspension that needed\n", - "FLOW_CLAY_STOCK = CONC_CLAY*FLOW_PLANT/CONC_CLAY_STOCK\n", - "FLOW_CLAY_STOCK= (FLOW_CLAY_STOCK).to(u.mL/u.s)\n", - "\n", - "#The time at which the clay suspension in the container would run out.\n", - "TIME_CLAY_STOCK = VOLUME_CLAY_STOCK/FLOW_CLAY_STOCK\n", - "TIME_CLAY_STOCK = TIME_CLAY_STOCK.to(u.hr)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### PACL" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#Concentration of Aluminum in the laboratory PACl stock \n", - "#(Confirm that this matches the stock concentration you are using.)\n", - "CONC_SUPER_STOCK_PACL = 69.4*u.g/u.L\n", - "\n", - "#The minimum dose of PACl of the mixed water in the flocculator.\n", - "CONC_PACL_MIN = 0.2*u.mg/u.L\n", - "\n", - "#The maximum dose of PACl of the mixed water in the flocculator.\n", - "CONC_PACL_MAX = 2*u.mg/u.L\n", - "\n", - "PACL_TUBING_COLORS = \"orange-yellow\"\n", - "\n", - "ID_PACL_TUBING = ID_TUBE_ARRAY[TUBE_CODE.index(PACL_TUBING_COLORS)]\n", - "\n", - "CONC_PACL_STOCK_MAX = CONC_PACL_MIN*FLOW_PLANT/(flow_6roller_tube_per_rev_calc(ID_PACL_TUBING)*MIN_RPM)\n", - "\n", - "CONC_PACL_STOCK_MAX = CONC_PACL_STOCK_MAX.to(u.g/u.L)\n", - "\n", - "CONC_PACL_STOCK_MIN = CONC_PACL_MAX*FLOW_PLANT/(flow_6roller_tube_per_rev_calc(ID_PACL_TUBING)*MAX_RPM)\n", - "\n", - "CONC_PACL_STOCK_MIN = CONC_PACL_STOCK_MIN.to(u.g/u.L)\n", - "\n", - "pacl_param = 10**((math.floor(math.log10(min(CONC_PACL_STOCK_MAX,CONC_SUPER_STOCK_PACL).magnitude)))-1)\n", - "pacl_param2 = min(CONC_PACL_STOCK_MAX,CONC_SUPER_STOCK_PACL)/pacl_param\n", - "CONC_PACL_STOCK = math.floor(pacl_param2.magnitude)*(pacl_param)\n", - "CONC_PACL_STOCK = CONC_PACL_STOCK*(u.g/u.L)\n", - "\n", - "#The volume of container which holds coagulant.\n", - "VOLUME_PACL_BOTTLE = 1*u.L\n", - "\n", - "#The volume of the PACl super stock that must be diluted\n", - "#to the volume of the PAClBottle.\n", - "VOLUME_PACL_SUPER_STOCK = VOLUME_PACL_BOTTLE*CONC_PACL_STOCK/CONC_SUPER_STOCK_PACL\n", - "VOLUME_PACL_SUPER_STOCK = VOLUME_PACL_SUPER_STOCK.to(u.mL)\n", - "\n", - "#Flow rate of coagulant solution that is needed\n", - "FLOW_PACL_MAX = CONC_PACL_MAX*FLOW_PLANT/CONC_PACL_STOCK\n", - "FLOW_PACL_MAX = FLOW_PACL_MAX.to(u.mL/u.s)\n", - "\n", - "#The time after which the coagulant in the container would be run out.\n", - "TIME_PACL = VOLUME_PACL_BOTTLE/FLOW_PACL_MAX\n", - "TIME_PACL = TIME_PACL.to(u.day)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Water" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#Flow rate of water needed directly from the tap. \n", - "#This can be calculated in ProCoDA using the external function for subtract.\n", - "\n", - "FLOW_WATER = FLOW_PLANT - FLOW_CLAY_STOCK - FLOW_PACL_MAX\n", - "FLOW_WATER = FLOW_WATER.to(u.mL/u.min)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/aide_design/cdc_functions.py b/aide_design/cdc_functions.py index 66c66c28..7a61891b 100644 --- a/aide_design/cdc_functions.py +++ b/aide_design/cdc_functions.py @@ -3,20 +3,18 @@ Created on Wed Jun 28 13:57:23 2017 @author: cc2467 + +This file does not follow PEP naming conventions for variables. - mw24 """ -import math import numpy as np -import pandas as pd - from aide_design import physchem as pc from aide_design.units import unit_registry as u from aide_design import utility as ut -from aide_design import expert_inputs as exp #============================================================================== # Functions for Coagulant Viscosities and Selecting Available Tube Diameters @@ -36,31 +34,48 @@ def _DiamTubeAvail(en_tube_series = True): # return (1/16)*u.inch #============================================================================== -NU_WATER = 1*(u.mm**2/u.s) - -@u.wraps(u.m**2/u.s, [u.kg/u.m**3], False) -def _nu_alum(conc_alum): - nu = (1 + (4.255 * 10**-6) * conc_alum**2.289) * NU_WATER - return nu.to(u.mm**2/u.s) - +@u.wraps(u.m**2/u.s, [u.kg/u.m**3, u.degK], False) +def viscosity_kinematic_alum(conc_alum, temp): + """Return the dynamic viscosity of water at a given temperature. + + If given units, the function will automatically convert to Kelvin. + If not given units, the function will assume Kelvin. + This function assumes that the temperature dependence can be explained + based on the effect on water and that there is no confounding effect from + the coagulant. + """ + nu = (1 + (4.255 * 10**-6) * conc_alum**2.289) * pc.viscosity_kinematic(temp).magnitude return nu -@u.wraps(u.m**2/u.s, [u.kg/u.m**3], False) -def _nu_pacl(conc_pacl): - nu = (1 + (2.383 * 10**-5) * conc_pacl**1.893) * NU_WATER - return nu.to(u.mm**2/u.s) +@u.wraps(u.m**2/u.s, [u.kg/u.m**3, u.degK], False) +def viscosity_kinematic_pacl(conc_pacl, temp): + """Return the dynamic viscosity of water at a given temperature. + If given units, the function will automatically convert to Kelvin. + If not given units, the function will assume Kelvin. + This function assumes that the temperature dependence can be explained + based on the effect on water and that there is no confounding effect from + the coagulant. + """ + nu = (1 + (2.383 * 10**-5) * conc_pacl**1.893) * pc.viscosity_kinematic(temp).magnitude return nu -@u.wraps(u.m**2/u.s, [u.kg/u.m**3, None], False) -def _nu_chem(conc_chem, en_chem): - if en_chem == 0: - return _nu_alum(conc_chem) - return _nu_pacl(conc_chem) - else: - return NU_WATER +@u.wraps(u.m**2/u.s, [u.kg/u.m**3, u.degK, None], False) +def viscosity_kinematic_chem(conc_chem, temp, en_chem): + """Return the dynamic viscosity of water at a given temperature. + + If given units, the function will automatically convert to Kelvin. + If not given units, the function will assume Kelvin. + """ + if en_chem == 0: + nu = viscosity_kinematic_alum(conc_chem, temp).magnitude + if en_chem == 1: + nu = viscosity_kinematic_pacl(conc_chem, temp).magnitude + if en_chem not in [0,1]: + nu = pc.viscosity_kinematic(temp).magnitude + return nu @@ -69,18 +84,15 @@ def _nu_chem(conc_chem, en_chem): # Behavior, and Lowest Possible Flow #============================================================================== -# Maximum flow that can be put through a tube of a given diameter without -# exceeding the allowable deviation from linear head loss behavior -@u.wraps(u.L/u.s, [u.m, u.m], False) -@u.wraps(u.m**3/u.s, [u.m, u.m], False) -def _flow_available(Diam, HeadlossCDC): - flow = math.pi * Diam**2 / 4 * ((( - 2 * exp.RATIO_LINEAR_CDC_ERROR * HeadlossCDC * pc.gravity)/ - exp.K_MINOR_CDC_TUBE)**1/2) - sqrt = 2 * exp.RATIO_LINEAR_CDC_ERROR * HeadlossCDC * pc.gravity.magnitude / exp.K_MINOR_CDC_TUBE - flow = math.pi * Diam**2 / 4 * (sqrt**0.5) - return flow +@u.wraps(u.m**3/u.s, [u.m, u.m, None, None], False) +def max_linear_flow(Diam, HeadlossCDC, Ratio_Error, KMinor): + """Return the maximum flow that will meet the linear requirement. + Maximum flow that can be put through a tube of a given diameter without + exceeding the allowable deviation from linear head loss behavior + """ + flow = (pc.area_circle(Diam)).magnitude * np.sqrt((2 * Ratio_Error * HeadlossCDC * pc.gravity)/ KMinor) + return flow.magnitude @@ -91,28 +103,30 @@ def _flow_available(Diam, HeadlossCDC): # Length of tube required to get desired head loss at maximum flow based on # the Hagen-Poiseuille equation. -@u.wraps(u.m, [u.m**3/u.s, u.m, u.m, u.m**2/u.s, None], False) -def _len_tube(Flow, Diam, HeadLoss, Nu, KMinor): - num1 = pc.gravity.magnitude * HeadLoss * math.pi * (Diam**4) - denom1 = 128 * Nu * Flow +@u.wraps(u.m, [u.m**3/u.s, u.m, u.m, u.kg/u.m**3, u.degK, None, None], False) +def _len_tube(Flow, Diam, HeadLoss, conc_chem, temp, en_chem, KMinor): + """Length of tube required to get desired head loss at maximum flow based on + the Hagen-Poiseuille equation.""" + num1 = pc.gravity.magnitude * HeadLoss * np.pi * (Diam**4) + denom1 = 128 * viscosity_kinematic_chem(conc_chem, temp, en_chem) * Flow num2 = Flow * KMinor - denom2 = 16 * math.pi * Nu + denom2 = 16 * np.pi * viscosity_kinematic_chem(conc_chem, temp, en_chem) len = ((num1/denom1) - (num2/denom2)) - return len + return len.magnitude #============================================================================== # Helper Functions #============================================================================== -@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m], False) +@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, None, None], False) def _n_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC): + DiamTubeAvail, HeadlossCDC, Ratio_Error, KMinor): np.ceil((FlowPlant * ConcDoseMax - )/ ConcStock*_flow_available(DiamTubeAvail, HeadlossCDC).magnitude) + )/ ConcStock*max_linear_flow(DiamTubeAvail, HeadlossCDC, Ratio_Error, KMinor).magnitude) return np.ceil((FlowPlant * ConcDoseMax) / - (ConcStock * _flow_available(DiamTubeAvail, HeadlossCDC).magnitude)) + (ConcStock * max_linear_flow(DiamTubeAvail, HeadlossCDC, Ratio_Error, KMinor).magnitude)) @u.wraps(u.m**3/u.s, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3], False) @@ -121,101 +135,100 @@ def _flow_chem_stock(FlowPlant, ConcDoseMax, ConcStock): return FlowPlant * ConcDoseMax / ConcStock -@u.wraps(u.m**3/u.s, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m], False) +@u.wraps(u.m**3/u.s, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m,None,None], False) def _flow_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC): + DiamTubeAvail, HeadlossCDC,Ratio_Error, KMinor): (_flow_chem_stock(FlowPlant, ConcDoseMax, ConcStock) - ) / (_n_tube_array(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC)) + ) / (_n_tube_array(FlowPlant, ConcDoseMax, ConcStock, + DiamTubeAvail, HeadlossCDC,Ratio_Error, KMinor)) return (_flow_chem_stock(FlowPlant, ConcDoseMax, ConcStock).magnitude ) / (_n_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC)) + DiamTubeAvail, HeadlossCDC,Ratio_Error, KMinor)) -# Calculate the length of each diameter tube given the corresponding flow rate -# and coagulant -# Choose the tube that is shorter than the maximum length tube. -@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, None, None], False) +# +@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.degK, None, None], False) def _length_cdc_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, ENCoag, MinorLossCDCTube): + DiamTubeAvail, HeadlossCDC, temp, en_chem, KMinor): + """Calculate the length of each diameter tube given the corresponding flow rate + and coagulant. Choose the tube that is shorter than the maximum length tube.""" - Flow = _flow_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC).magnitude - Nu = _nu_chem(ConcStock, ENCoag).magnitude + Flow = _flow_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC,Ratio_Error, KMinor).magnitude + - return _len_tube(Flow, DiamTubeAvail, HeadlossCDC, Nu, MinorLossCDCTube).magnitude + return _len_tube(Flow, DiamTubeAvail, HeadlossCDC, ConcStock, temp, en_chem, KMinor).magnitude # Find the index of that tube -@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, None, None], False) +@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, u.degK, None, None], False) def i_cdc(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube): + DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, + en_chem, KMinor): - tube_array = _length_cdc_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, ENCoag, - MinorLossCDCTube) - - print(tube_array[0].magnitude) - print(LenCDCTubeMax) + tube_array = (_length_cdc_tube_array(FlowPlant, ConcDoseMax, ConcStock, + DiamTubeAvail, HeadlossCDC, temp, en_chem, + KMinor)).magnitude + - if tube_array[0].magnitude < float(LenCDCTubeMax): + if tube_array[0] < float(LenCDCTubeMax): y = ut.floor_nearest(LenCDCTubeMax,tube_array) - x = (tube_array.index(y)).magnitude + myindex =np.where(tube_array==y)[0][0] else: - x = 0 + myindex = 0 - return x + return myindex #============================================================================== # Final easy to use functions #============================================================================== -#The length of tubing may be longer than the max specified if the stock concentration is too -# high to give a viable solution with the specified length of tubing. -@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, None, None], False) + +@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, u.degK, None, None], False) def len_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube): - - index = i_cdc(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube) - - len_cdc_tube = (_length_cdc_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC, ENCoag, - MinorLossCDCTube))[index].magnitude + DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, + en_chem, KMinor): + """The length of tubing may be longer than the max specified if the stock + concentration is too high to give a viable solution with the specified + length of tubing.""" + index = i_cdc(FlowPlant, ConcDoseMax, ConcStock, + DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, + en_chem, KMinor) + len_cdc_tube = (_length_cdc_tube_array(FlowPlant, ConcDoseMax, ConcStock, + DiamTubeAvail, HeadlossCDC, temp, en_chem, + KMinor))[index].magnitude - return len_cdc_tube + return len_cdc_tube -@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, None, None], False) +@u.wraps(u.m, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, u.degK, None, None], False) def diam_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube): + temp, en_chem, KMinor): index = i_cdc(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube) + temp, en_chem, KMinor) diam_cdc_tube = DiamTubeAvail[index] return diam_cdc_tube -@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, None, None], False) +@u.wraps(None, [u.m**3/u.s, u.kg/u.m**3, u.kg/u.m**3, u.m, u.m, u.m, u.degK, None, None], False) def n_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube): + temp, en_chem, KMinor): index = i_cdc(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, - ENCoag, MinorLossCDCTube) + temp, en_chem, KMinor) n_cdc_tube = _n_tube_array(FlowPlant, ConcDoseMax, ConcStock, - DiamTubeAvail, HeadlossCDC)[index] + DiamTubeAvail, HeadlossCDC, Ratio_Error, KMinor)[index] return n_cdc_tube @@ -223,12 +236,19 @@ def n_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, # testing -FLOW_PLANT = 0.01*u.m**3/u.s -DIAM_ENGLISH_TUBE_AVAIL = np.array(np.arange(1/16,6/16,1/16))*u.inch -NU_BLEACH = 1*(u.mm**2/u.s) -HEADLOSS_MAX = 10*(u.cm) -CONC_BLEACH_CL2 = 51.4*(u.gram/u.L) -CONC_CL2 = 2*(u.mg/u.L) -LENGTH_CDC_TUBE_MAX = 2 * u.m -EN_CHEM = 2 -K_MINOR = 2 +FlowPlant = 100*u.L/u.s +DiamTubeAvail = np.array(np.arange(1/16,6/16,1/16))*u.inch +temp = u.Quantity(20,u.degC) +HeadlossCDC = 20*(u.cm) +ConcStock = 51.4*(u.gram/u.L) +ConcDoseMax = 2*(u.mg/u.L) +LenCDCTubeMax = 4 * u.m +en_chem = 2 +KMinor = 2 +Ratio_Error=0.1 +x=len_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, + DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, + en_chem, KMinor) +#print(x) +#print(diam_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, en_chem, KMinor).to(u.inch)) +#print(n_cdc_tube(FlowPlant, ConcDoseMax, ConcStock, DiamTubeAvail, HeadlossCDC, LenCDCTubeMax, temp, en_chem, KMinor)) \ No newline at end of file diff --git a/aide_design/materials_database.py b/aide_design/materials_database.py index 0fa92670..4198ae1f 100644 --- a/aide_design/materials_database.py +++ b/aide_design/materials_database.py @@ -188,7 +188,7 @@ DIAM_DRILL_MET = [0.5*u.mm] counter = 0 - +# these drill series should have been created using arange. while DIAM_DRILL_MET[counter] <= 4.98*u.mm: counter+=1 diff --git a/Research/__init__.py b/aide_design/unit_process_design/__init__.py similarity index 100% rename from Research/__init__.py rename to aide_design/unit_process_design/__init__.py diff --git a/aide_design/unit_process_design/civilwork/StaRS_civilwork.py b/aide_design/unit_process_design/civilwork/StaRS_civilwork.py deleted file mode 100644 index 8156a1a0..00000000 --- a/aide_design/unit_process_design/civilwork/StaRS_civilwork.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 15:22:23 2017 - -@author: cc2467 -""" - diff --git a/aide_design/unit_process_design/civilwork/ent_tank_civilwork.py b/aide_design/unit_process_design/civilwork/ent_tank_civilwork.py deleted file mode 100644 index 1931b67c..00000000 --- a/aide_design/unit_process_design/civilwork/ent_tank_civilwork.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 15:21:36 2017 - -@author: cc2467 -""" - diff --git a/aide_design/unit_process_design/civilwork/floc.py b/aide_design/unit_process_design/civilwork/floc.py new file mode 100644 index 00000000..8e1272f7 --- /dev/null +++ b/aide_design/unit_process_design/civilwork/floc.py @@ -0,0 +1,29 @@ +class Flocculator(object): + def __init__(self, f_module, f_tank, first_f_tank, num_f_tanks, design_specs="design_specs"): + self.name = "flocculator" + self.f_module = f_module + + +class Tank(object): + def __init__(self): + self.hi = "hi" + + +class F_tank(Tank): + def __init__(self): + self.hi = "hi" + + +class First_f_tank(object): + def __init__(self): + self.hi = "hi" + + +class Sheet(object): + def __init__(self, height, width, d_bottom_hole_to_bottom): + self.hi = "hi" + + +class Support_structure(object): + def __init__(self): + self.hi = "hi" \ No newline at end of file diff --git a/aide_design/unit_process_design/civilwork/floc_civilwork.py b/aide_design/unit_process_design/civilwork/floc_civilwork.py deleted file mode 100644 index 8156a1a0..00000000 --- a/aide_design/unit_process_design/civilwork/floc_civilwork.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 15:22:23 2017 - -@author: cc2467 -""" - diff --git a/aide_design/unit_process_design/civilwork/sed_civilwork.py b/aide_design/unit_process_design/civilwork/sed_civilwork.py deleted file mode 100644 index 0a7f1339..00000000 --- a/aide_design/unit_process_design/civilwork/sed_civilwork.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 14:59:02 2017 - -@author: cc2467 -""" - diff --git a/aide_design/unit_process_design/prefab/__init__.py b/aide_design/unit_process_design/prefab/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/aide_design/unit_process_design/prefab/lfom_prefab_functional.py b/aide_design/unit_process_design/prefab/lfom_prefab_functional.py index 93611b52..c0b14c5c 100644 --- a/aide_design/unit_process_design/prefab/lfom_prefab_functional.py +++ b/aide_design/unit_process_design/prefab/lfom_prefab_functional.py @@ -1,5 +1,8 @@ # -*- coding: utf-8 -*- """ +Edited on September 1, 2017 +@author: Monroe Weber-Shirk + Created on Wed Jun 21 17:16:46 2017 @author: cc2467 @@ -10,16 +13,10 @@ # although math is "built in" it needs to be imported so it's functions can be used. import math -from scipy import constants, interpolate - #see numpy cheat sheet https://www.dataquest.io/blog/images/cheat-sheets/numpy-cheat-sheet.pdf #The numpy import is needed because it is renamed here as np. import numpy as np -import pandas as pd - -import matplotlib.pyplot as plt - # add imports for AguaClara code that will be needed # physchem has functions related to hydraulics, fractal flocs, flocculation, sedimentation, etc. from aide_design import physchem as pc @@ -37,157 +34,163 @@ # The following constants need to go into the constants file Pi_LFOM_safety = 1.2 # pipe schedule for LFOM -SDR_LFOM = 26 - +#SDR_LFOM = 26 +#FLOW = 10*u.L/u.s +#HL_LFOM = 20*u.cm + +#primary outputs from this file are +#Nominal diameter nom_diam_lfom_pipe(FLOW,HL_LFOM,Pi_LFOM_safety,SDR_LFOM) +#number of rows n_lfom_rows(FLOW,HL_LFOM) +#orifice diameter orifice_diameter(FLOW,HL_LFOM,drill_series_uom) +#number of orifices in each row n_lfom_orifices(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM) +#height of the center of each row height_lfom_orifices(FLOW,HL_LFOM,drill_series_uom) + +# output is width per flow rate. +@u.wraps(u.s/(u.m**2), [u.m,u.m], False) def width_stout(HL_LFOM,z): - return 2/((2*u.g_0*z)**(1/2)*math.pi*HL_LFOM) - -def n_lfom_rows(Q,HL_LFOM): - N_estimated = (HL_LFOM*math.pi/(2*width_stout(HL_LFOM,HL_LFOM)*Q)).to(u.dimensionless) - return min(10,max(4,math.trunc(N_estimated.magnitude))) - -FLOW = 5*u.L/u.s -HL_LFOM = 20*u.cm + return (2/((2*pc.gravity*z)**(1/2)*ratio_VC_orifice*np.pi*HL_LFOM)).magnitude + + +@u.wraps(None, [u.m**3/u.s,u.m], False) +def n_lfom_rows(FLOW,HL_LFOM): + """This equation states that the open area corresponding to one row can be + set equal to two orifices of diameter=row height. If there are more than + two orifices per row at the top of the LFOM then there are more orifices + than are convenient to drill and more than necessary for good accuracy. + Thus this relationship can be used to increase the spacing between the + rows and thus increase the diameter of the orifices. This spacing function + also sets the lower depth on the high flow rate LFOM with no accurate + flows below a depth equal to the first row height. + + But it might be better to always set then number of rows to 10. + The challenge is to figure out a reasonable system of constraints that + reliably returns a valid solution. + """ + N_estimated = (HL_LFOM*np.pi/(2*width_stout(HL_LFOM,HL_LFOM)*FLOW)) + #variablerow=min(10,max(4,math.trunc(N_estimated.magnitude))) + return 10 def dist_center_lfom_rows(FLOW,HL_LFOM): return HL_LFOM/n_lfom_rows(FLOW,HL_LFOM) - -# average vertical velocity of the water inside the LFOM pipe -# at the very bottom of the bottom row of orifices -# The speed of falling water is 0.841 m/s for all linear flow orifice meters of height 20cm, independent of total plant flow rate. -def vol_lfom_pipe_critical(HL_LFOM): +def vel_lfom_pipe_critical(HL_LFOM): + """The average vertical velocity of the water inside the LFOM pipe + at the very bottom of the bottom row of orifices + The speed of falling water is 0.841 m/s for all linear flow orifice meters + of height 20 cm, independent of total plant flow rate.""" return (4/(3*math.pi)*(2*u.g_0*HL_LFOM)**(1/2)).to(u.m/u.s) def area_lfom_pipe_min(FLOW,HL_LFOM,Pi_LFOM_safety): - return (Pi_LFOM_safety*FLOW/vol_lfom_pipe_critical(HL_LFOM)).to(u.m**2) + return (Pi_LFOM_safety*FLOW/vel_lfom_pipe_critical(HL_LFOM)).to(u.m**2) def nom_diam_lfom_pipe(FLOW,HL_LFOM,Pi_LFOM_safety,SDR_LFOM): ID=pc.diam_circle(area_lfom_pipe_min(FLOW,HL_LFOM,Pi_LFOM_safety)) return pipe.ND_SDR_available(ID,SDR_LFOM) -# another possibility is to use integration to solve this problem. -# Here we use the width of the stout weir in the center of the top row -# to estimate the area of the top orifice def area_lfom_orifices_max(FLOW,HL_LFOM): - return FLOW*width_stout(HL_LFOM,HL_LFOM-0.5*dist_center_lfom_rows(FLOW,HL_LFOM))*dist_center_lfom_rows(FLOW,HL_LFOM) + """Estimate the orifice area corresponding to the top row of orifices. + Another solution method is to use integration to solve this problem. + Here we use the width of the stout weir in the center of the top row + to estimate the area of the top orifice + """ + return ((FLOW*width_stout(HL_LFOM,HL_LFOM-0.5*dist_center_lfom_rows(FLOW,HL_LFOM))*dist_center_lfom_rows(FLOW,HL_LFOM))).to(u.m**2) def d_lfom_orifices_max(FLOW,HL_LFOM): return (pc.diam_circle(area_lfom_orifices_max(FLOW,HL_LFOM))) -from enum import Enum -class uomeasure(Enum): - english = 0 - metric = 1 +def orifice_diameter(FLOW,HL_LFOM,drill_bits): + maxdrill = (min((dist_center_lfom_rows(FLOW,HL_LFOM)).to(u.m).magnitude,(d_lfom_orifices_max(FLOW,HL_LFOM)).to(u.m).magnitude))*u.m + return ut.floor_nearest(maxdrill,drill_bits) -# define the constant. How do we make all of the constants available to designers? -drill_series_uom=uomeasure -def drill_series(uomeasure): - if uomeasure is uomeasure.english: - ds=np.arange(1/32, 1/4, 1/32) - ds=np.append(ds,np.arange(3/8, 1, 1/8)) - ds=np.append(ds,np.arange(1.25, 3.25, 1/4)) - ds=ds*u.inch - else: - ds=np.arange(0.5, 4.9, 0.1) - ds=np.append(ds,np.arange(5, 19, 1)) - ds=np.append(ds,np.arange(20, 50, 2)) - ds=ds*u.mm - return ds +def drillbit_area(FLOW,HL_LFOM,drill_bits): + return pc.area_circle(orifice_diameter(FLOW,HL_LFOM,drill_bits)) -def lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom): - return ut.ceil_nearest(d_lfom_orifices_max(FLOW,HL_LFOM),drill_series(drill_series_uom)) - -def lfom_drillbit_area(FLOW,HL_LFOM,drill_series_uom): - return pc.area_circle(lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom)) - -##A bound on the number of orifices allowed in each row. -##The distance between consecutive orifices must be enough to retain structural integrity of the pipe - -def n_lfom_orifices_per_row_max(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM): +def n_lfom_orifices_per_row_max(FLOW,HL_LFOM,drill_bits,SDR_LFOM): + """A bound on the number of orifices allowed in each row. + The distance between consecutive orifices must be enough to retain + structural integrity of the pipe. + """ S_lfom_orifices_Min= 3*u.mm - return math.floor(math.pi*(pipe.ID_SDR(nom_diam_lfom_pipe(FLOW,HL_LFOM,Pi_LFOM_safety,SDR_LFOM),SDR_LFOM))/(lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom)+S_lfom_orifices_Min)) + return math.floor(math.pi*(pipe.ID_SDR(nom_diam_lfom_pipe(FLOW,HL_LFOM,Pi_LFOM_safety,SDR_LFOM),SDR_LFOM))/(orifice_diameter(FLOW,HL_LFOM,drill_bits)+S_lfom_orifices_Min)) -#locations where we will try to get the target flows is in between orifices at elevation Pi.H def flow_ramp(FLOW,HL_LFOM): - return((np.arange((dist_center_lfom_rows(FLOW,HL_LFOM)/u.cm),(HL_LFOM/u.cm),(dist_center_lfom_rows(FLOW,HL_LFOM)/u.cm))*FLOW)*u.cm)/HL_LFOM - -def height_lfom_orifices(FLOW,HL_LFOM,drill_series_uom): - return np.arange(lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom.metric)*0.5,HL_LFOM,dist_center_lfom_rows(FLOW,HL_LFOM),dtype= object) + n_rows = n_lfom_rows(FLOW,HL_LFOM) + return np.linspace(FLOW.magnitude/n_rows,FLOW.magnitude,n_rows)*FLOW.units + +def height_lfom_orifices(FLOW,HL_LFOM,drill_bits): + """Calculates the height of the center of each row of orifices. + The bottom of the bottom row orifices is at the zero elevation + point of the LFOM so that the flow goes to zero when the water height + is at zero. + """ + + return (np.arange(((orifice_diameter(FLOW,HL_LFOM,drill_bits)*0.5).to(u.m)).magnitude, + (HL_LFOM.to(u.m)).magnitude, + ((dist_center_lfom_rows(FLOW,HL_LFOM)).to(u.m)).magnitude))*u.m + +#print(height_lfom_orifices(10*u.L/u.s,20*u.cm,[0.75]*u.inch)) + +def flow_lfom_actual(FLOW,HL_LFOM,drill_bits,Row_Index_Submerged,N_LFOM_Orifices): + """Calculates the flow for a given number of submerged rows of orifices + """ + D_LFOM_Orifices=orifice_diameter(FLOW,HL_LFOM,drill_bits) + row_height=dist_center_lfom_rows(FLOW,HL_LFOM) + #harray is the distance from the water level to the center of the orifices when the water is at the max level + harray = (np.linspace(row_height.to(u.mm),HL_LFOM.to(u.mm),n_lfom_rows(FLOW,HL_LFOM)))*u.mm -0.5* D_LFOM_Orifices + FLOW_new=0*u.m**3/u.s + for i in range(Row_Index_Submerged+1): + FLOW_new = FLOW_new + (N_LFOM_Orifices[i]*(pc.flow_orifice_vert(D_LFOM_Orifices,harray[Row_Index_Submerged-i],ratio_VC_orifice))) + return FLOW_new -#Calculate the flow for a given number of submerged rows of orifices -def flow_lfom_actual(FLOW,HL_LFOM,drill_series_uom,Row_Index_Submerged,N_LFOM_Orifices): - D_LFOM_Orifices=lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom).to(u.m) - FLOW_new=[] - for i in range(Row_Index_Submerged): - h = np.arange(dist_center_lfom_rows(FLOW,HL_LFOM),HL_LFOM,dist_center_lfom_rows(FLOW,HL_LFOM),dtype=object) - h = h[Row_Index_Submerged].to(u.m) - d = np.arange(0.5* D_LFOM_Orifices,HL_LFOM,dist_center_lfom_rows(FLOW,HL_LFOM),dtype=object) - FLOW_new.append(N_LFOM_Orifices[i]*(pc.flow_orifice_vert(D_LFOM_Orifices,h-d[i],ratio_VC_orifice))) - return sum(FLOW_new) - #Calculate number of orifices at each level given a diameter -def fric_n_lfom_orifices(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM): - FLOW_ramp_local=flow_ramp(FLOW,HL_LFOM) - D_LFOM_Orifices=lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom) - H_ramp_local=np.arange(D_LFOM_Orifices*0.5,HL_LFOM,dist_center_lfom_rows(FLOW,HL_LFOM),dtype=object) - n=[] - for i in range (len(H_ramp_local)-1): - h=np.arange(dist_center_lfom_rows(FLOW,HL_LFOM),HL_LFOM,dist_center_lfom_rows(FLOW,HL_LFOM),dtype=object) - d=H_ramp_local - if nom_diam_lfom_pipe(FLOW,HL_LFOM,Pi_LFOM_safety,SDR_LFOM)<=12*u.inch: - n.append(min(max(0,round((FLOW_ramp_local[i]-flow_lfom_actual(FLOW,HL_LFOM,drill_series_uom,i,n))/pc.flow_orifice_vert(D_LFOM_Orifices,h[i]-d[i],ratio_VC_orifice))),n_lfom_orifices_per_row_max(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM))) - else: - n.append(max(0,round((FLOW_ramp_local[i]-flow_lfom_actual(FLOW,HL_LFOM,drill_series_uom,i,n))/pc.flow_orifice_vert(D_LFOM_Orifices,h[i]-d[i],ratio_VC_orifice)))) +def n_lfom_orifices(FLOW,HL_LFOM,drill_bits,SDR_LFOM): + FLOW_ramp_local = flow_ramp(FLOW,HL_LFOM) + n_orifices_max =n_lfom_orifices_per_row_max(FLOW,HL_LFOM,drill_bits,SDR_LFOM) + n_rows = (n_lfom_rows(FLOW,HL_LFOM)) + D_LFOM_Orifices = orifice_diameter(FLOW,HL_LFOM,drill_bits) + # H is distance from the elevation between two rows of orifices down to the center of the orifices + H=dist_center_lfom_rows(FLOW,HL_LFOM)-D_LFOM_Orifices*0.5 + n=[] + for i in range(n_rows): + #place zero in the row that we are going to calculate the required number of orifices + n=np.append(n,0) + #calculate the ideal number of orifices at the current row without constraining to an integer + n_orifices_real=((FLOW_ramp_local[i]-flow_lfom_actual(FLOW,HL_LFOM,drill_bits,i,n))/ + pc.flow_orifice_vert(D_LFOM_Orifices,H,ratio_VC_orifice)).to(u.dimensionless).magnitude + #constrain number of orifices to be less than the max per row and greater or equal to 0 + n[i]=min((max(0,round(n_orifices_real))),n_orifices_max) return n - + #This function calculates the error of the design based on the differences between the predicted flow rate #and the actual flow rate through the LFOM. -def flow_lfom_error(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM): - N_lfom_orifices=fric_n_lfom_orifices(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM) +def flow_lfom_error(FLOW,HL_LFOM,drill_bits,SDR_LFOM): + N_lfom_orifices=n_lfom_orifices(FLOW,HL_LFOM,drill_bits,SDR_LFOM) FLOW_lfom_error=[] for j in range (len(N_lfom_orifices)-1): - FLOW_lfom_error.append((flow_lfom_actual(FLOW,HL_LFOM,drill_series_uom,j,N_lfom_orifices)-flow_ramp(FLOW,HL_LFOM)[j])/FLOW) + FLOW_lfom_error.append((flow_lfom_actual(FLOW,HL_LFOM,drill_bits,j,N_lfom_orifices)-flow_ramp(FLOW,HL_LFOM)[j])/FLOW) return FLOW_lfom_error -#This funciton returns the maximum error, the absolute value of the errors is take into account positive -#and negative errors -x= max(flow_lfom_error(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM)) -y=x**2 -FLOW_LFOM_ERROR_MAX=y**1/2 - def flow_lfom_ideal(FLOW,HL_LFOM,H): flow_lfom_ideal=(FLOW*H)/HL_LFOM return flow_lfom_ideal -def flow_lfom(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM,H): - D_lfom_orifices=lfom_drillbit_diameter(FLOW,HL_LFOM,drill_series_uom) +def flow_lfom(FLOW,HL_LFOM,drill_bits,SDR_LFOM,H): + D_lfom_orifices=orifice_diameter(FLOW,HL_LFOM,drill_bits) H_submerged=np.arange(H-0.5*D_lfom_orifices,HL_LFOM,H-dist_center_lfom_rows(FLOW,HL_LFOM),dtype=object) - N_lfom_orifices=fric_n_lfom_orifices(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM) + N_lfom_orifices=n_lfom_orifices(FLOW,HL_LFOM,drill_bits,SDR_LFOM) flow=[] for i in range (len(H_submerged)): flow.append(pc.flow_orifice_vert(D_lfom_orifices,H_submerged[i],ratio_VC_orifice)*N_lfom_orifices[i]) return sum (flow) -if FLOW==1.6*(u.L/u.s): - NOM_DIAM_RAPID_MIX_pipe=2*u.inch -else: - NOM_DIAM_RAPID_MIX_pipe=nom_diam_lfom_pipe(11*u.L/u.s,HL_LFOM,Pi_LFOM_safety,SDR_LFOM) - -HEIGHT_LFOM_ORIFICES=height_lfom_orifices(FLOW,HL_LFOM,drill_series_uom) - -N_LFOM_ORIFICES=fric_n_lfom_orifices(FLOW,HL_LFOM,drill_series_uom,SDR_LFOM) - -N_LFOM_ROWS=len(N_LFOM_ORIFICES) - \ No newline at end of file diff --git a/aide_design/unit_process_draw/cdc_prefab_sp17 v1.iges b/aide_design/unit_process_draw/cdc_prefab_sp17 v1.iges deleted file mode 100644 index 6c11dadd..00000000 --- a/aide_design/unit_process_draw/cdc_prefab_sp17 v1.iges +++ /dev/null @@ -1,1258 +0,0 @@ - S 1 -,,18Hcdc_prefab_sp17 v1,18Hcdc_prefab_sp17 v1,7Hunknown,7Hunknown,32,38,G 1 -7,99,15,,1.,2,2HMM,1,0.08,15H20170810.165004,0.01,10000.,7Hunknown,7HunkG 2 -nown,11,0,; G 3 - 314 1 00000200D 1 - 314 2 0 0D 2 - 406 3 00000000D 3 - 406 1 15 0D 4 - 406 4 00000000D 5 - 406 1 15 0D 6 - 406 5 00000000D 7 - 406 1 15 0D 8 - 406 6 00000000D 9 - 406 1 15 0D 10 - 406 7 00000000D 11 - 406 1 15 0D 12 - 406 8 00000000D 13 - 406 1 15 0D 14 - 406 9 00000000D 15 - 406 1 15 0D 16 - 406 10 00000000D 17 - 406 1 15 0D 18 - 406 11 00000000D 19 - 406 1 15 0D 20 - 406 12 00000000D 21 - 406 1 15 0D 22 - 406 13 00000000D 23 - 406 1 15 0D 24 - 406 14 00000000D 25 - 406 1 15 0D 26 - 406 15 00000000D 27 - 406 1 15 0D 28 - 406 16 00000000D 29 - 406 1 15 0D 30 - 406 17 00000000D 31 - 406 1 15 0D 32 - 406 18 00000000D 33 - 406 1 15 0D 34 - 406 19 00000000D 35 - 406 1 15 0D 36 - 406 20 00000000D 37 - 406 1 15 0D 38 - 406 21 00000000D 39 - 406 1 15 0D 40 - 406 22 00000000D 41 - 406 1 15 0D 42 - 406 23 00000000D 43 - 406 1 15 0D 44 - 406 24 00000000D 45 - 406 1 15 0D 46 - 406 25 00000000D 47 - 406 1 15 0D 48 - 406 26 00000000D 49 - 406 1 15 0D 50 - 406 27 00000000D 51 - 406 1 15 0D 52 - 406 28 00000000D 53 - 406 1 15 0D 54 - 406 29 00000000D 55 - 406 1 15 0D 56 - 406 30 00000000D 57 - 406 1 15 0D 58 - 406 31 00000000D 59 - 406 1 15 0D 60 - 406 32 00000000D 61 - 406 1 15 0D 62 - 406 33 00000000D 63 - 406 1 15 0D 64 - 406 34 00000000D 65 - 406 1 15 0D 66 - 406 35 00000000D 67 - 406 1 15 0D 68 - 406 36 00000000D 69 - 406 1 15 0D 70 - 406 37 00000000D 71 - 406 1 15 0D 72 - 406 38 00000000D 73 - 406 1 15 0D 74 - 406 39 00000000D 75 - 406 1 15 0D 76 - 406 40 00000000D 77 - 406 1 15 0D 78 - 406 41 00000000D 79 - 406 1 15 0D 80 - 406 42 00000000D 81 - 406 1 15 0D 82 - 406 43 00000000D 83 - 406 1 15 0D 84 - 406 44 00000000D 85 - 406 1 15 0D 86 - 406 45 00000000D 87 - 406 1 15 0D 88 - 406 46 00000000D 89 - 406 1 15 0D 90 - 406 47 00000000D 91 - 406 1 15 0D 92 - 406 48 00000000D 93 - 406 1 15 0D 94 - 406 49 00000000D 95 - 406 1 15 0D 96 - 406 50 00000000D 97 - 406 1 15 0D 98 - 406 51 00000000D 99 - 406 1 15 0D 100 - 406 52 00000000D 101 - 406 1 15 0D 102 - 406 53 00000000D 103 - 406 1 15 0D 104 - 406 54 00000000D 105 - 406 1 15 0D 106 - 406 55 00000000D 107 - 406 1 15 0D 108 - 406 56 00000000D 109 - 406 1 15 0D 110 - 406 57 00000000D 111 - 406 1 15 0D 112 - 406 58 00000000D 113 - 406 1 15 0D 114 - 406 59 00000000D 115 - 406 1 15 0D 116 - 406 60 00000000D 117 - 406 1 15 0D 118 - 406 61 00000000D 119 - 406 1 15 0D 120 - 406 62 00000000D 121 - 406 1 15 0D 122 - 406 63 00000000D 123 - 406 1 15 0D 124 - 406 64 00000000D 125 - 406 1 15 0D 126 - 406 65 00000000D 127 - 406 1 15 0D 128 - 406 66 00000000D 129 - 406 1 15 0D 130 - 406 67 00000000D 131 - 406 1 15 0D 132 - 406 68 00000000D 133 - 406 1 15 0D 134 - 406 69 00000000D 135 - 406 1 15 0D 136 - 406 70 00000000D 137 - 406 1 15 0D 138 - 406 71 00000000D 139 - 406 1 15 0D 140 - 406 72 00000000D 141 - 406 1 15 0D 142 - 406 73 00000000D 143 - 406 1 15 0D 144 - 406 74 00000000D 145 - 406 1 15 0D 146 - 406 75 00000000D 147 - 406 1 15 0D 148 - 406 76 00000000D 149 - 406 1 15 0D 150 - 406 77 00000000D 151 - 406 1 15 0D 152 - 406 78 00000000D 153 - 406 1 15 0D 154 - 406 79 00000000D 155 - 406 1 15 0D 156 - 406 80 00000000D 157 - 406 1 15 0D 158 - 406 81 00000000D 159 - 406 1 15 0D 160 - 406 82 00000000D 161 - 406 1 15 0D 162 - 406 83 00000000D 163 - 406 1 15 0D 164 - 406 84 00000000D 165 - 406 1 15 0D 166 - 406 85 00000000D 167 - 406 1 15 0D 168 - 406 86 00000000D 169 - 406 1 15 0D 170 - 406 87 00000000D 171 - 406 1 15 0D 172 - 406 88 00000000D 173 - 406 1 15 0D 174 - 406 89 00000000D 175 - 406 1 15 0D 176 - 406 90 00000000D 177 - 406 1 15 0D 178 - 406 91 00000000D 179 - 406 1 15 0D 180 - 406 92 00000000D 181 - 406 1 15 0D 182 - 406 93 00000000D 183 - 406 1 15 0D 184 - 406 94 00000000D 185 - 406 1 15 0D 186 - 406 95 00000000D 187 - 406 1 15 0D 188 - 406 96 00000000D 189 - 406 1 15 0D 190 - 406 97 00000000D 191 - 406 1 15 0D 192 - 406 98 00000000D 193 - 406 1 15 0D 194 - 406 99 00000000D 195 - 406 1 15 0D 196 - 406 100 00000000D 197 - 406 1 15 0D 198 - 406 101 00000000D 199 - 406 1 15 0D 200 - 406 102 00000000D 201 - 406 1 15 0D 202 - 406 103 00000000D 203 - 406 1 15 0D 204 - 406 104 00000000D 205 - 406 1 15 0D 206 - 406 105 00000000D 207 - 406 1 15 0D 208 - 406 106 00000000D 209 - 406 1 15 0D 210 - 406 107 00000000D 211 - 406 1 15 0D 212 - 406 108 00000000D 213 - 406 1 15 0D 214 - 406 109 00000000D 215 - 406 1 15 0D 216 - 406 110 00000000D 217 - 406 1 15 0D 218 - 406 111 00000000D 219 - 406 1 15 0D 220 - 406 112 00000000D 221 - 406 1 15 0D 222 - 406 113 00000000D 223 - 406 1 15 0D 224 - 408 114 447 00000001D 225 - 408 0 1 0 0D 226 - 408 115 449 00000001D 227 - 408 0 1 0 0D 228 - 408 116 451 00000001D 229 - 408 0 1 0 0D 230 - 408 117 453 00000001D 231 - 408 0 1 0 0D 232 - 408 118 455 00000001D 233 - 408 0 1 0 0D 234 - 408 119 457 00000001D 235 - 408 0 1 0 0D 236 - 408 120 459 00000001D 237 - 408 0 1 0 0D 238 - 408 121 461 00000001D 239 - 408 0 1 0 0D 240 - 408 122 463 00000001D 241 - 408 0 1 0 0D 242 - 408 123 465 00000001D 243 - 408 0 1 0 0D 244 - 408 124 467 00000001D 245 - 408 0 1 0 0D 246 - 408 125 469 00000001D 247 - 408 0 1 0 0D 248 - 408 126 471 00000001D 249 - 408 0 1 0 0D 250 - 408 127 473 00000001D 251 - 408 0 1 0 0D 252 - 408 128 475 00000001D 253 - 408 0 1 0 0D 254 - 408 129 477 00000001D 255 - 408 0 1 0 0D 256 - 408 130 479 00010001D 257 - 408 0 1 0 0D 258 - 408 131 481 00010001D 259 - 408 0 1 0 0D 260 - 408 132 483 00010001D 261 - 408 0 1 0 0D 262 - 408 133 485 00010001D 263 - 408 0 1 0 0D 264 - 408 134 487 00010001D 265 - 408 0 1 0 0D 266 - 408 135 489 00000001D 267 - 408 0 1 0 0D 268 - 408 136 491 00000001D 269 - 408 0 1 0 0D 270 - 408 137 493 00000001D 271 - 408 0 1 0 0D 272 - 408 138 495 00000001D 273 - 408 0 1 0 0D 274 - 408 139 497 00000001D 275 - 408 0 1 0 0D 276 - 408 140 499 00000001D 277 - 408 0 1 0 0D 278 - 408 141 501 00000001D 279 - 408 0 1 0 0D 280 - 408 142 503 00000001D 281 - 408 0 1 0 0D 282 - 408 143 505 00000001D 283 - 408 0 1 0 0D 284 - 408 144 507 00000001D 285 - 408 0 1 0 0D 286 - 408 145 509 00000001D 287 - 408 0 1 0 0D 288 - 408 146 511 00000001D 289 - 408 0 1 0 0D 290 - 408 147 513 00000001D 291 - 408 0 1 0 0D 292 - 408 148 515 00000001D 293 - 408 0 1 0 0D 294 - 408 149 517 00000001D 295 - 408 0 1 0 0D 296 - 408 150 519 00000001D 297 - 408 0 1 0 0D 298 - 408 151 521 00000001D 299 - 408 0 1 0 0D 300 - 408 152 523 00000001D 301 - 408 0 1 0 0D 302 - 408 153 525 00000001D 303 - 408 0 1 0 0D 304 - 408 154 527 00000001D 305 - 408 0 1 0 0D 306 - 408 155 529 00000001D 307 - 408 0 1 0 0D 308 - 408 156 531 00000001D 309 - 408 0 1 0 0D 310 - 408 157 533 00000001D 311 - 408 0 1 0 0D 312 - 408 158 535 00000001D 313 - 408 0 1 0 0D 314 - 408 159 537 00000001D 315 - 408 0 1 0 0D 316 - 408 160 539 00000001D 317 - 408 0 1 0 0D 318 - 408 161 541 00000001D 319 - 408 0 1 0 0D 320 - 408 162 543 00000001D 321 - 408 0 1 0 0D 322 - 408 163 545 00000001D 323 - 408 0 1 0 0D 324 - 408 164 547 00000001D 325 - 408 0 1 0 0D 326 - 408 165 549 00000001D 327 - 408 0 1 0 0D 328 - 408 166 551 00000001D 329 - 408 0 1 0 0D 330 - 408 167 553 00000001D 331 - 408 0 1 0 0D 332 - 408 168 555 00000001D 333 - 408 0 1 0 0D 334 - 408 169 557 00000001D 335 - 408 0 1 0 0D 336 - 408 170 559 00000001D 337 - 408 0 1 0 0D 338 - 408 171 561 00010001D 339 - 408 0 1 0 0D 340 - 408 172 563 00010001D 341 - 408 0 1 0 0D 342 - 408 173 565 00010001D 343 - 408 0 1 0 0D 344 - 408 174 00010001D 345 - 408 0 1 0 0D 346 - 408 175 567 00010001D 347 - 408 0 1 0 0D 348 - 408 176 569 00010001D 349 - 408 0 1 0 0D 350 - 408 177 571 00010001D 351 - 408 0 1 0 0D 352 - 408 178 573 00010001D 353 - 408 0 1 0 0D 354 - 408 179 575 00010001D 355 - 408 0 1 0 0D 356 - 408 180 577 00010001D 357 - 408 0 1 0 0D 358 - 408 181 00010001D 359 - 408 0 1 0 0D 360 - 408 182 579 00010001D 361 - 408 0 1 0 0D 362 - 408 183 581 00010001D 363 - 408 0 1 0 0D 364 - 408 184 583 00010001D 365 - 408 0 1 0 0D 366 - 408 185 585 00000001D 367 - 408 0 1 0 0D 368 - 408 186 587 00010001D 369 - 408 0 1 0 0D 370 - 408 187 589 00010001D 371 - 408 0 1 0 0D 372 - 408 188 591 00010001D 373 - 408 0 1 0 0D 374 - 408 189 593 00010001D 375 - 408 0 1 0 0D 376 - 408 190 595 00000001D 377 - 408 0 1 0 0D 378 - 408 191 597 00010001D 379 - 408 0 1 0 0D 380 - 408 192 599 00010001D 381 - 408 0 1 0 0D 382 - 408 193 601 00010001D 383 - 408 0 1 0 0D 384 - 408 194 603 00010001D 385 - 408 0 1 0 0D 386 - 408 195 605 00010001D 387 - 408 0 1 0 0D 388 - 408 196 607 00010001D 389 - 408 0 1 0 0D 390 - 408 197 00010001D 391 - 408 0 1 0 0D 392 - 408 198 609 00010001D 393 - 408 0 1 0 0D 394 - 408 199 611 00010001D 395 - 408 0 1 0 0D 396 - 408 200 613 00010001D 397 - 408 0 1 0 0D 398 - 408 201 615 00010001D 399 - 408 0 1 0 0D 400 - 408 202 617 00010001D 401 - 408 0 1 0 0D 402 - 408 203 619 00010001D 403 - 408 0 1 0 0D 404 - 408 204 621 00010001D 405 - 408 0 1 0 0D 406 - 408 205 623 00010001D 407 - 408 0 1 0 0D 408 - 408 206 625 00010001D 409 - 408 0 1 0 0D 410 - 408 207 627 00010001D 411 - 408 0 1 0 0D 412 - 408 208 629 00010001D 413 - 408 0 1 0 0D 414 - 408 209 631 00010001D 415 - 408 0 1 0 0D 416 - 408 210 633 00010001D 417 - 408 0 1 0 0D 418 - 408 211 635 00010001D 419 - 408 0 1 0 0D 420 - 408 212 637 00010001D 421 - 408 0 1 0 0D 422 - 408 213 639 00010001D 423 - 408 0 1 0 0D 424 - 408 214 641 00010001D 425 - 408 0 1 0 0D 426 - 408 215 643 00010001D 427 - 408 0 1 0 0D 428 - 408 216 645 00010001D 429 - 408 0 1 0 0D 430 - 408 217 647 00010001D 431 - 408 0 1 0 0D 432 - 408 218 649 00010001D 433 - 408 0 1 0 0D 434 - 408 219 651 00010001D 435 - 408 0 1 0 0D 436 - 408 220 653 00010001D 437 - 408 0 1 0 0D 438 - 408 221 655 00010001D 439 - 408 0 1 0 0D 440 - 408 222 657 00010001D 441 - 408 0 1 0 0D 442 - 408 223 659 00000001D 443 - 408 0 1 0 0D 444 - 408 224 661 00000001D 445 - 408 0 1 0 0D 446 - 124 225 00000000D 447 - 124 4 0 0D 448 - 124 229 00000000D 449 - 124 4 0 0D 450 - 124 233 00000000D 451 - 124 4 0 0D 452 - 124 237 00000000D 453 - 124 2 0 0D 454 - 124 239 00000000D 455 - 124 2 0 0D 456 - 124 241 00000000D 457 - 124 2 0 0D 458 - 124 243 00000000D 459 - 124 2 0 0D 460 - 124 245 00000000D 461 - 124 4 0 0D 462 - 124 249 00000000D 463 - 124 4 0 0D 464 - 124 253 00000000D 465 - 124 4 0 0D 466 - 124 257 00000000D 467 - 124 4 0 0D 468 - 124 261 00000000D 469 - 124 4 0 0D 470 - 124 265 00000000D 471 - 124 4 0 0D 472 - 124 269 00000000D 473 - 124 4 0 0D 474 - 124 273 00000000D 475 - 124 4 0 0D 476 - 124 277 00000000D 477 - 124 4 0 0D 478 - 124 281 00000000D 479 - 124 1 0 0D 480 - 124 282 00000000D 481 - 124 2 0 0D 482 - 124 284 00000000D 483 - 124 2 0 0D 484 - 124 286 00000000D 485 - 124 2 0 0D 486 - 124 288 00000000D 487 - 124 1 0 0D 488 - 124 289 00000000D 489 - 124 2 0 0D 490 - 124 291 00000000D 491 - 124 2 0 0D 492 - 124 293 00000000D 493 - 124 2 0 0D 494 - 124 295 00000000D 495 - 124 2 0 0D 496 - 124 297 00000000D 497 - 124 2 0 0D 498 - 124 299 00000000D 499 - 124 2 1 0D 500 - 124 301 00000000D 501 - 124 2 1 0D 502 - 124 303 00000000D 503 - 124 2 0 0D 504 - 124 305 00000000D 505 - 124 2 0 0D 506 - 124 307 00000000D 507 - 124 2 1 0D 508 - 124 309 00000000D 509 - 124 2 1 0D 510 - 124 311 00000000D 511 - 124 2 0 0D 512 - 124 313 00000000D 513 - 124 2 1 0D 514 - 124 315 00000000D 515 - 124 2 0 0D 516 - 124 317 00000000D 517 - 124 2 1 0D 518 - 124 319 00000000D 519 - 124 2 0 0D 520 - 124 321 00000000D 521 - 124 2 0 0D 522 - 124 323 00000000D 523 - 124 2 1 0D 524 - 124 325 00000000D 525 - 124 2 0 0D 526 - 124 327 00000000D 527 - 124 2 1 0D 528 - 124 329 00000000D 529 - 124 2 1 0D 530 - 124 331 00000000D 531 - 124 2 0 0D 532 - 124 333 00000000D 533 - 124 2 1 0D 534 - 124 335 00000000D 535 - 124 2 0 0D 536 - 124 337 00000000D 537 - 124 2 0 0D 538 - 124 339 00000000D 539 - 124 2 1 0D 540 - 124 341 00000000D 541 - 124 2 1 0D 542 - 124 343 00000000D 543 - 124 2 0 0D 544 - 124 345 00000000D 545 - 124 2 0 0D 546 - 124 347 00000000D 547 - 124 2 1 0D 548 - 124 349 00000000D 549 - 124 2 1 0D 550 - 124 351 00000000D 551 - 124 2 0 0D 552 - 124 353 00000000D 553 - 124 2 0 0D 554 - 124 355 00000000D 555 - 124 2 1 0D 556 - 124 357 00000000D 557 - 124 2 0 0D 558 - 124 359 00000000D 559 - 124 2 1 0D 560 - 124 361 00000000D 561 - 124 1 0 0D 562 - 124 362 00000000D 563 - 124 1 0 0D 564 - 124 363 00000000D 565 - 124 1 0 0D 566 - 124 364 00000000D 567 - 124 1 0 0D 568 - 124 365 00000000D 569 - 124 1 0 0D 570 - 124 366 00000000D 571 - 124 1 0 0D 572 - 124 367 00000000D 573 - 124 2 0 0D 574 - 124 369 00000000D 575 - 124 1 0 0D 576 - 124 370 00000000D 577 - 124 1 0 0D 578 - 124 371 00000000D 579 - 124 1 0 0D 580 - 124 372 00000000D 581 - 124 1 0 0D 582 - 124 373 00000000D 583 - 124 1 0 0D 584 - 124 374 00000000D 585 - 124 1 0 0D 586 - 124 375 00000000D 587 - 124 1 0 0D 588 - 124 376 00000000D 589 - 124 1 0 0D 590 - 124 377 00000000D 591 - 124 1 0 0D 592 - 124 378 00000000D 593 - 124 1 0 0D 594 - 124 379 00000000D 595 - 124 1 0 0D 596 - 124 380 00000000D 597 - 124 2 0 0D 598 - 124 382 00000000D 599 - 124 2 0 0D 600 - 124 384 00000000D 601 - 124 2 0 0D 602 - 124 386 00000000D 603 - 124 3 0 0D 604 - 124 389 00000000D 605 - 124 4 1 0D 606 - 124 393 00000000D 607 - 124 2 0 0D 608 - 124 395 00000000D 609 - 124 1 0 0D 610 - 124 396 00000000D 611 - 124 1 0 0D 612 - 124 397 00000000D 613 - 124 1 0 0D 614 - 124 398 00000000D 615 - 124 1 0 0D 616 - 124 399 00000000D 617 - 124 4 0 0D 618 - 124 403 00000000D 619 - 124 4 1 0D 620 - 124 407 00000000D 621 - 124 2 0 0D 622 - 124 409 00000000D 623 - 124 2 0 0D 624 - 124 411 00000000D 625 - 124 2 1 0D 626 - 124 413 00000000D 627 - 124 2 1 0D 628 - 124 415 00000000D 629 - 124 2 0 0D 630 - 124 417 00000000D 631 - 124 2 0 0D 632 - 124 419 00000000D 633 - 124 2 0 0D 634 - 124 421 00000000D 635 - 124 2 0 0D 636 - 124 423 00000000D 637 - 124 2 0 0D 638 - 124 425 00000000D 639 - 124 2 0 0D 640 - 124 427 00000000D 641 - 124 2 0 0D 642 - 124 429 00000000D 643 - 124 2 0 0D 644 - 124 431 00000000D 645 - 124 2 0 0D 646 - 124 433 00000000D 647 - 124 2 0 0D 648 - 124 435 00000000D 649 - 124 2 0 0D 650 - 124 437 00000000D 651 - 124 2 0 0D 652 - 124 439 00000000D 653 - 124 2 0 0D 654 - 124 441 00000000D 655 - 124 2 0 0D 656 - 124 443 00000000D 657 - 124 2 0 0D 658 - 124 445 00000000D 659 - 124 2 0 0D 660 - 124 447 00000000D 661 - 124 2 0 0D 662 - 308 449 00010200D 663 - 308 0 1 0 0D 664 - 308 450 00010200D 665 - 308 0 1 0 0D 666 - 308 451 00010200D 667 - 308 0 1 0 0D 668 - 308 452 00010200D 669 - 308 0 1 0 0D 670 - 308 453 00010200D 671 - 308 0 1 0 0D 672 - 308 454 00010200D 673 - 308 0 1 0 0D 674 - 308 455 00010200D 675 - 308 0 1 0 0D 676 - 308 456 00010200D 677 - 308 0 1 0 0D 678 - 308 457 00010200D 679 - 308 0 1 0 0D 680 - 308 458 00010200D 681 - 308 0 1 0 0D 682 - 308 459 00010200D 683 - 308 0 1 0 0D 684 - 308 460 00010200D 685 - 308 0 1 0 0D 686 - 308 461 00010200D 687 - 308 0 1 0 0D 688 - 308 462 00010200D 689 - 308 0 1 0 0D 690 - 308 463 00010200D 691 - 308 0 1 0 0D 692 - 308 464 00010200D 693 - 308 0 1 0 0D 694 - 308 465 00010200D 695 - 308 0 1 0 0D 696 - 308 466 00010200D 697 - 308 0 1 0 0D 698 - 308 467 00010200D 699 - 308 0 1 0 0D 700 - 308 468 00010200D 701 - 308 0 1 0 0D 702 - 308 469 00010200D 703 - 308 0 2 0 0D 704 - 308 471 00010200D 705 - 308 0 1 0 0D 706 - 308 472 00010200D 707 - 308 0 1 0 0D 708 - 308 473 00010200D 709 - 308 0 1 0 0D 710 - 308 474 00010200D 711 - 308 0 1 0 0D 712 - 308 475 00010200D 713 - 308 0 1 0 0D 714 - 308 476 00010200D 715 - 308 0 1 0 0D 716 - 308 477 00010200D 717 - 308 0 1 0 0D 718 - 308 478 00010200D 719 - 308 0 1 0 0D 720 - 308 479 00010200D 721 - 308 0 1 0 0D 722 - 308 480 00010200D 723 - 308 0 1 0 0D 724 - 308 481 00010200D 725 - 308 0 1 0 0D 726 - 308 482 00010200D 727 - 308 0 1 0 0D 728 - 308 483 00010200D 729 - 308 0 1 0 0D 730 - 308 484 00010200D 731 - 308 0 1 0 0D 732 - 308 485 00010200D 733 - 308 0 1 0 0D 734 - 308 486 00010200D 735 - 308 0 1 0 0D 736 - 308 487 00010200D 737 - 308 0 1 0 0D 738 - 308 488 00010200D 739 - 308 0 1 0 0D 740 - 308 489 00010200D 741 - 308 0 1 0 0D 742 - 308 490 00010200D 743 - 308 0 1 0 0D 744 - 308 491 00010200D 745 - 308 0 1 0 0D 746 - 308 492 00010200D 747 - 308 0 1 0 0D 748 - 308 493 00010200D 749 - 308 0 1 0 0D 750 - 308 494 00010200D 751 - 308 0 1 0 0D 752 - 308 495 00010200D 753 - 308 0 1 0 0D 754 - 308 496 00010200D 755 - 308 0 2 0 0D 756 -314,62.7450980392157,62.7450980392157,62.7450980392157,13HSteel 1P 1 -- Satin; 1P 2 -406,1,21HBarbed Tube Fitting:1; 3P 3 -406,1,21HBarbed Tube Fitting:2; 5P 4 -406,1,21HBarbed Tube Fitting:3; 7P 5 -406,1,21HBarbed Tube Fitting:4; 9P 6 -406,1,21HBarbed Tube Fitting:5; 11P 7 -406,1,21HBarbed Tube Fitting:6; 13P 8 -406,1,21HBarbed Tube Fitting:7; 15P 9 -406,1,21HBarbed Tube Fitting:8; 17P 10 -406,1,28HLarge Plastic Routing Clip:1; 19P 11 -406,1,28HLarge Plastic Routing Clip:2; 21P 12 -406,1,28HLarge Plastic Routing Clip:3; 23P 13 -406,1,28HLarge Plastic Routing Clip:4; 25P 14 -406,1,28HLarge Plastic Routing Clip:5; 27P 15 -406,1,28HLarge Plastic Routing Clip:6; 29P 16 -406,1,28HLarge Plastic Routing Clip:7; 31P 17 -406,1,28HLarge Plastic Routing Clip:8; 33P 18 -406,1,10HGroup#65:1; 35P 19 -406,1,26HStainless Steel Wing Nut:1; 37P 20 -406,1,26HStainless Steel Wing Nut:2; 39P 21 -406,1,26HPlastic-Head Thumb Screw:1; 41P 22 -406,1,10HGroup#64:1; 43P 23 -406,1,19H2 NPT Float Valve:1; 45P 24 -406,1,19H2 NPT Float Valve:2; 47P 25 -406,1,19H2 NPT Float Valve:3; 49P 26 -406,1,19H2 NPT Float Valve:4; 51P 27 -406,1,26HPlastic-Head Thumb Screw:2; 53P 28 -406,1,26HStainless Steel Wing Nut:3; 55P 29 -406,1,26HStainless Steel Wing Nut:4; 57P 30 -406,1,26HPlastic-Head Thumb Screw:3; 59P 31 -406,1,26HPlastic-Head Thumb Screw:4; 61P 32 -406,1,26HStainless Steel Wing Nut:5; 63P 33 -406,1,26HStainless Steel Wing Nut:6; 65P 34 -406,1,26HPlastic-Head Thumb Screw:5; 67P 35 -406,1,26HStainless Steel Wing Nut:7; 69P 36 -406,1,26HPlastic-Head Thumb Screw:6; 71P 37 -406,1,26HStainless Steel Wing Nut:8; 73P 38 -406,1,26HPlastic-Head Thumb Screw:7; 75P 39 -406,1,26HPlastic-Head Thumb Screw:8; 77P 40 -406,1,26HStainless Steel Wing Nut:9; 79P 41 -406,1,26HPlastic-Head Thumb Screw:9; 81P 42 -406,1,27HStainless Steel Wing Nut:10; 83P 43 -406,1,27HStainless Steel Wing Nut:11; 85P 44 -406,1,27HPlastic-Head Thumb Screw:10; 87P 45 -406,1,27HStainless Steel Wing Nut:12; 89P 46 -406,1,27HPlastic-Head Thumb Screw:11; 91P 47 -406,1,27HPlastic-Head Thumb Screw:12; 93P 48 -406,1,27HStainless Steel Wing Nut:13; 95P 49 -406,1,27HStainless Steel Wing Nut:14; 97P 50 -406,1,27HPlastic-Head Thumb Screw:13; 99P 51 -406,1,27HPlastic-Head Thumb Screw:14; 101P 52 -406,1,27HStainless Steel Wing Nut:15; 103P 53 -406,1,27HStainless Steel Wing Nut:16; 105P 54 -406,1,27HPlastic-Head Thumb Screw:15; 107P 55 -406,1,27HPlastic-Head Thumb Screw:16; 109P 56 -406,1,27HStainless Steel Wing Nut:17; 111P 57 -406,1,27HPlastic-Head Thumb Screw:17; 113P 58 -406,1,27HStainless Steel Wing Nut:18; 115P 59 -406,1,9HGroup#1:1; 117P 60 -406,1,9HGroup#4:1; 119P 61 -406,1,9HGroup#5:1; 121P 62 -406,1,10HGroup#11:1; 123P 63 -406,1,10HGroup#13:1; 125P 64 -406,1,9HGroup#6:1; 127P 65 -406,1,9HGroup#9:1; 129P 66 -406,1,10HGroup#10:1; 131P 67 -406,1,9HGroup#7:1; 133P 68 -406,1,9HGroup#8:1; 135P 69 -406,1,10HGroup#11:2; 137P 70 -406,1,10HGroup#12:1; 139P 71 -406,1,9HGroup#3:1; 141P 72 -406,1,9HGroup#2:1; 143P 73 -406,1,10HGroup#14:1; 145P 74 -406,1,10HGroup#61:1; 147P 75 -406,1,10HGroup#60:1; 149P 76 -406,1,10HGroup#58:1; 151P 77 -406,1,10HGroup#59:1; 153P 78 -406,1,10HGroup#62:1; 155P 79 -406,1,19H2" PVC Pipe Elbow:1; 157P 80 -406,1,19H2" PVC Pipe Elbow:2; 159P 81 -406,1,10HGroup#15:1; 161P 82 -406,1,17H2" PVC Pipe Tee:1; 163P 83 -406,1,19H2" PVC Pipe Elbow:3; 165P 84 -406,1,4H2":1; 167P 85 -406,1,10HGroup#35:1; 169P 86 -406,1,10HGroup#33:1; 171P 87 -406,1,10HGroup#32:1; 173P 88 -406,1,10HGroup#37:1; 175P 89 -406,1,14HLlave Bola 0:1; 177P 90 -406,1,20H2" PVC Ball Valves:1; 179P 91 -406,1,20H2" PVC Ball Valves:2; 181P 92 -406,1,17H2" PVC Pipe Tee:2; 183P 93 -406,1,17H2" PVC Pipe Tee:3; 185P 94 -406,1,19H2" PVC Pipe Elbow:4; 187P 95 -406,1,19H2" PVC Pipe Elbow:5; 189P 96 -406,1,20H2" PVC Ball Valves:3; 191P 97 -406,1,20H2" PVC Ball Valves:4; 193P 98 -406,1,10HGroup#46:1; 195P 99 -406,1,10HGroup#45:1; 197P 100 -406,1,10HGroup#16:1; 199P 101 -406,1,10HGroup#38:1; 201P 102 -406,1,10HGroup#39:1; 203P 103 -406,1,10HGroup#40:1; 205P 104 -406,1,10HGroup#40:2; 207P 105 -406,1,10HGroup#41:1; 209P 106 -406,1,10HGroup#41:2; 211P 107 -406,1,10HGroup#42:1; 213P 108 -406,1,10HGroup#43:1; 215P 109 -406,1,10HGroup#44:1; 217P 110 -406,1,10HGroup#44:2; 219P 111 -406,1,10HGroup#57:1; 221P 112 -406,1,10HGroup#57:2; 223P 113 -408,663,0.,0.,0.,1.,0,1,3; 225P 114 -408,663,0.,0.,0.,1.,0,1,5; 227P 115 -408,663,0.,0.,0.,1.,0,1,7; 229P 116 -408,663,0.,0.,0.,1.,0,1,9; 231P 117 -408,663,0.,0.,0.,1.,0,1,11; 233P 118 -408,663,0.,0.,0.,1.,0,1,13; 235P 119 -408,663,0.,0.,0.,1.,0,1,15; 237P 120 -408,663,0.,0.,0.,1.,0,1,17; 239P 121 -408,665,0.,0.,0.,1.,0,1,19; 241P 122 -408,665,0.,0.,0.,1.,0,1,21; 243P 123 -408,665,0.,0.,0.,1.,0,1,23; 245P 124 -408,665,0.,0.,0.,1.,0,1,25; 247P 125 -408,665,0.,0.,0.,1.,0,1,27; 249P 126 -408,665,0.,0.,0.,1.,0,1,29; 251P 127 -408,665,0.,0.,0.,1.,0,1,31; 253P 128 -408,665,0.,0.,0.,1.,0,1,33; 255P 129 -408,667,0.,0.,0.,1.,0,1,35; 257P 130 -408,669,0.,0.,0.,1.,0,1,37; 259P 131 -408,669,0.,0.,0.,1.,0,1,39; 261P 132 -408,671,0.,0.,0.,1.,0,1,41; 263P 133 -408,673,0.,0.,0.,1.,0,1,43; 265P 134 -408,675,0.,0.,0.,1.,0,1,45; 267P 135 -408,675,0.,0.,0.,1.,0,1,47; 269P 136 -408,675,0.,0.,0.,1.,0,1,49; 271P 137 -408,675,0.,0.,0.,1.,0,1,51; 273P 138 -408,671,0.,0.,0.,1.,0,1,53; 275P 139 -408,669,0.,0.,0.,1.,0,1,55; 277P 140 -408,669,0.,0.,0.,1.,0,1,57; 279P 141 -408,671,0.,0.,0.,1.,0,1,59; 281P 142 -408,671,0.,0.,0.,1.,0,1,61; 283P 143 -408,669,0.,0.,0.,1.,0,1,63; 285P 144 -408,669,0.,0.,0.,1.,0,1,65; 287P 145 -408,671,0.,0.,0.,1.,0,1,67; 289P 146 -408,669,0.,0.,0.,1.,0,1,69; 291P 147 -408,671,0.,0.,0.,1.,0,1,71; 293P 148 -408,669,0.,0.,0.,1.,0,1,73; 295P 149 -408,671,0.,0.,0.,1.,0,1,75; 297P 150 -408,671,0.,0.,0.,1.,0,1,77; 299P 151 -408,669,0.,0.,0.,1.,0,1,79; 301P 152 -408,671,0.,0.,0.,1.,0,1,81; 303P 153 -408,669,0.,0.,0.,1.,0,1,83; 305P 154 -408,669,0.,0.,0.,1.,0,1,85; 307P 155 -408,671,0.,0.,0.,1.,0,1,87; 309P 156 -408,669,0.,0.,0.,1.,0,1,89; 311P 157 -408,671,0.,0.,0.,1.,0,1,91; 313P 158 -408,671,0.,0.,0.,1.,0,1,93; 315P 159 -408,669,0.,0.,0.,1.,0,1,95; 317P 160 -408,669,0.,0.,0.,1.,0,1,97; 319P 161 -408,671,0.,0.,0.,1.,0,1,99; 321P 162 -408,671,0.,0.,0.,1.,0,1,101; 323P 163 -408,669,0.,0.,0.,1.,0,1,103; 325P 164 -408,669,0.,0.,0.,1.,0,1,105; 327P 165 -408,671,0.,0.,0.,1.,0,1,107; 329P 166 -408,671,0.,0.,0.,1.,0,1,109; 331P 167 -408,669,0.,0.,0.,1.,0,1,111; 333P 168 -408,671,0.,0.,0.,1.,0,1,113; 335P 169 -408,669,0.,0.,0.,1.,0,1,115; 337P 170 -408,677,0.,0.,0.,1.,0,1,117; 339P 171 -408,679,0.,0.,0.,1.,0,1,119; 341P 172 -408,681,0.,0.,0.,1.,0,1,121; 343P 173 -408,683,0.,0.,0.,1.,0,1,123; 345P 174 -408,685,0.,0.,0.,1.,0,1,125; 347P 175 -408,687,0.,0.,0.,1.,0,1,127; 349P 176 -408,689,0.,0.,0.,1.,0,1,129; 351P 177 -408,691,0.,0.,0.,1.,0,1,131; 353P 178 -408,693,0.,0.,0.,1.,0,1,133; 355P 179 -408,695,0.,0.,0.,1.,0,1,135; 357P 180 -408,683,0.,0.,0.,1.,0,1,137; 359P 181 -408,697,0.,0.,0.,1.,0,1,139; 361P 182 -408,699,0.,0.,0.,1.,0,1,141; 363P 183 -408,701,0.,0.,0.,1.,0,1,143; 365P 184 -408,703,0.,0.,0.,1.,0,1,145; 367P 185 -408,705,0.,0.,0.,1.,0,1,147; 369P 186 -408,707,0.,0.,0.,1.,0,1,149; 371P 187 -408,709,0.,0.,0.,1.,0,1,151; 373P 188 -408,711,0.,0.,0.,1.,0,1,153; 375P 189 -408,713,0.,0.,0.,1.,0,1,155; 377P 190 -408,715,0.,0.,0.,1.,0,1,157; 379P 191 -408,715,0.,0.,0.,1.,0,1,159; 381P 192 -408,717,0.,0.,0.,1.,0,1,161; 383P 193 -408,719,0.,0.,0.,1.,0,1,163; 385P 194 -408,715,0.,0.,0.,1.,0,1,165; 387P 195 -408,721,0.,0.,0.,1.,0,1,167; 389P 196 -408,723,0.,0.,0.,1.,0,1,169; 391P 197 -408,725,0.,0.,0.,1.,0,1,171; 393P 198 -408,727,0.,0.,0.,1.,0,1,173; 395P 199 -408,729,0.,0.,0.,1.,0,1,175; 397P 200 -408,731,0.,0.,0.,1.,0,1,177; 399P 201 -408,733,0.,0.,0.,1.,0,1,179; 401P 202 -408,733,0.,0.,0.,1.,0,1,181; 403P 203 -408,719,0.,0.,0.,1.,0,1,183; 405P 204 -408,719,0.,0.,0.,1.,0,1,185; 407P 205 -408,715,0.,0.,0.,1.,0,1,187; 409P 206 -408,715,0.,0.,0.,1.,0,1,189; 411P 207 -408,733,0.,0.,0.,1.,0,1,191; 413P 208 -408,733,0.,0.,0.,1.,0,1,193; 415P 209 -408,735,0.,0.,0.,1.,0,1,195; 417P 210 -408,737,0.,0.,0.,1.,0,1,197; 419P 211 -408,739,0.,0.,0.,1.,0,1,199; 421P 212 -408,741,0.,0.,0.,1.,0,1,201; 423P 213 -408,743,0.,0.,0.,1.,0,1,203; 425P 214 -408,745,0.,0.,0.,1.,0,1,205; 427P 215 -408,745,0.,0.,0.,1.,0,1,207; 429P 216 -408,747,0.,0.,0.,1.,0,1,209; 431P 217 -408,747,0.,0.,0.,1.,0,1,211; 433P 218 -408,749,0.,0.,0.,1.,0,1,213; 435P 219 -408,751,0.,0.,0.,1.,0,1,215; 437P 220 -408,753,0.,0.,0.,1.,0,1,217; 439P 221 -408,753,0.,0.,0.,1.,0,1,219; 441P 222 -408,755,0.,0.,0.,1.,0,1,221; 443P 223 -408,755,0.,0.,0.,1.,0,1,223; 445P 224 -124,-0.000137259839029152,0.999999761646133,0.00067665900876471, 447P 225 -246.887029395419,-7.95165414124775D-19,0.000676659015138927, 447P 226 --0.999999771066262,140.763198290252,-0.999999990579868, 447P 227 --0.000137259807605744,-9.28781074947983D-8,34.1522029405964; 447P 228 -124,-0.000137259839029152,0.999999761646133,0.00067665900876471, 449P 229 -246.887029395419,-7.95350702581987D-19,0.000676659015138927, 449P 230 --0.999999771066262,223.497320094946,-0.999999990579868, 449P 231 --0.000137259807605744,-9.28781074947983D-8,34.1522029405964; 449P 232 -124,-0.000137259839029152,0.999999761646133,0.00067665900876471, 451P 233 -246.887029395419,-7.95522756149398D-19,0.000676659015138927, 451P 234 --0.999999771066262,306.161505850458,-0.999999990579868, 451P 235 --0.000137259807605744,-9.28781074947983D-8,34.1522029405964; 451P 236 -124,1.,0.,0.,229.478341826793,0.,-9.02056207507939D-16,1., 453P 237 -43.2249862318287,0.,-1.,-9.02056207507939D-16,13.4619999999999; 453P 238 -124,1.,0.,0.,229.478341826793,0.,-9.02056207507939D-16,1., 455P 239 -125.73,0.,-1.,-9.02056207507939D-16,13.4619999999999; 455P 240 -124,1.,0.,0.,229.478341826793,0.,-9.02056207507939D-16,1., 457P 241 -208.3308,0.,-1.,-9.02056207507939D-16,13.4619999999999; 457P 242 -124,1.,0.,0.,229.478341826793,0.,-9.02056207507939D-16,1., 459P 243 -290.70006563099,0.,-1.,-9.02056207507939D-16,13.4619999999999; 459P 244 -124,-0.000137259839029151,0.999999761646133,0.00067665900876471, 461P 245 -246.887029395419,-7.94821306989953D-19,0.000676659015138927, 461P 246 --0.999999771066262,58.3183982555273,-0.999999990579868, 461P 247 --0.000137259807605743,-9.28781074947983D-8,34.1522029405964; 461P 248 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 463P 249 --5.63993296509579D-15,-1.9203857723246D-16,1., 463P 250 --1.9203857723246D-16,11.8942272756099,-1.,-1.9203857723246D-16, 463P 251 --4.44089209850063D-16,182.811551439138; 463P 252 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 465P 253 --6.04874936562927D-15,-1.9203857723246D-16,1., 465P 254 --1.9203857723246D-16,107.058435721131,-1.,-1.9203857723246D-16, 465P 255 --4.44089209850063D-16,182.811551439138; 465P 256 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 467P 257 --6.04874936562927D-15,-1.9203857723246D-16,1., 467P 258 --1.9203857723246D-16,179.519363724363,-1.,-1.9203857723246D-16, 467P 259 --4.44089209850063D-16,182.811551439138; 467P 260 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 469P 261 --6.04874936562927D-15,-1.9203857723246D-16,1., 469P 262 --1.9203857723246D-16,275.067185816407,-1.,-1.9203857723246D-16, 469P 263 --4.44089209850063D-16,182.811551439138; 469P 264 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 471P 265 --5.34375774499229D-15,-1.9203857723246D-16,1., 471P 266 --1.9203857723246D-16,11.8942272756099,-1.,-1.9203857723246D-16, 471P 267 --4.44089209850063D-16,230.055551439138; 471P 268 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 473P 269 --6.04874936562927D-15,-1.9203857723246D-16,1., 473P 270 --1.9203857723246D-16,107.058435721131,-1.,-1.9203857723246D-16, 473P 271 --4.44089209850063D-16,230.055551439138; 473P 272 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 475P 273 --6.04874936562927D-15,-1.9203857723246D-16,1., 475P 274 --1.9203857723246D-16,179.519363724363,-1.,-1.9203857723246D-16, 475P 275 --4.44089209850063D-16,230.055551439138; 475P 276 -124,-4.44089209850063D-16,1.9203857723246D-16,1., 477P 277 --6.04874936562927D-15,-1.9203857723246D-16,1., 477P 278 --1.9203857723246D-16,275.067185816407,-1.,-1.9203857723246D-16, 477P 279 --4.44089209850063D-16,230.055551439138; 477P 280 -124,1.,0.,0.,0.,0.,1.,0.,5.15620000000001,0.,0.,1.,0.; 479P 281 -124,1.,0.,0.,27.3171203821208,0.,1.,0.,55.8524241070196,0.,0., 481P 282 -1.,0.297356194979567; 481P 283 -124,1.,0.,0.,27.3171203821208,0.,1.,0.,55.8524241070196,0.,0., 483P 284 -1.,34.8295044321255; 483P 285 -124,1.,0.,0.,8.382,0.,1.,0.,60.5958659511474,0.,0.,1., 485P 286 -34.4652241618315; 485P 287 -124,1.,0.,0.,8.382,0.,1.,0.,60.5958659511474,0.,0.,1.,0.; 487P 288 -124,0.,1.,0.,39.7182586206216,-1.,0.,0.,61.5296158342311,0.,0., 489P 289 -1.,32.0714392590788; 489P 290 -124,0.,1.,0.,39.7182586206216,-1.,0.,0.,156.936258343328,0.,0., 491P 291 -1.,32.0714392590788; 491P 292 -124,0.,1.,0.,39.7182586206216,-1.,0.,0.,229.422514773259,0.,0., 493P 293 -1.,32.0714392590788; 493P 294 -124,0.,1.,0.,39.7182586206216,-1.,0.,0.,325.295836651891,0.,0., 495P 295 -1.,32.0714392590788; 495P 296 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 497P 297 -12.5460242620775,-3.52495810318487D-15,0.,-1.,229.339484590739; 497P 298 -124,-1.,0.,0.,-6.35,0.,1.,0.,7.76894333592096,0.,0.,1., 499P 299 -217.074551097207; 499P 300 -124,-1.,0.,0.,-6.35,0.,1.,0.,7.76894333592096,0.,0.,1., 501P 301 -169.830551097207; 501P 302 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 503P 303 -12.5460242620775,-3.52495810318487D-15,0.,-1.,182.095484590739; 503P 304 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 505P 305 -58.5708242620775,-3.52495810318487D-15,0.,-1.,229.339484590739; 505P 306 -124,-1.,0.,0.,-6.35,0.,1.,0.,53.793743335921,0.,0.,1., 507P 307 -217.074551097207; 507P 308 -124,-1.,0.,0.,-6.35,0.,1.,0.,53.793743335921,0.,0.,1., 509P 309 -169.830551097207; 509P 310 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 511P 311 -58.5708242620775,-3.52495810318487D-15,0.,-1.,182.095484590739; 511P 312 -124,-1.,0.,0.,-6.35,0.,1.,0.,102.917343335921,0.,0.,1., 513P 313 -217.074551097207; 513P 314 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 515P 315 -107.694424262078,-3.52495810318487D-15,0.,-1.,229.339484590739; 515P 316 -124,-1.,0.,0.,-6.35,0.,1.,0.,102.917343335921,0.,0.,1., 517P 317 -169.830551097207; 517P 318 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 519P 319 -107.694424262078,-3.52495810318487D-15,0.,-1.,182.095484590739; 519P 320 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 521P 321 -153.719224262078,-3.52495810318487D-15,0.,-1.,182.095484590739; 521P 322 -124,-1.,0.,0.,-6.35,0.,1.,0.,148.942143335921,0.,0.,1., 523P 323 -169.830551097207; 523P 324 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 525P 325 -153.719224262078,-3.52495810318487D-15,0.,-1.,229.339484590739; 525P 326 -124,-1.,0.,0.,-6.35,0.,1.,0.,148.942143335921,0.,0.,1., 527P 327 -217.074551097207; 527P 328 -124,-1.,0.,0.,-6.35,0.,1.,0.,175.332743335921,0.,0.,1., 529P 329 -169.830551097207; 529P 330 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 531P 331 -180.109824262077,-3.52495810318487D-15,0.,-1.,182.095484590739; 531P 332 -124,-1.,0.,0.,-6.35,0.,1.,0.,175.332743335921,0.,0.,1., 533P 333 -217.074551097207; 533P 334 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 535P 335 -180.109824262077,-3.52495810318487D-15,0.,-1.,229.339484590739; 535P 336 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 537P 337 -226.134624262077,-3.52495810318487D-15,0.,-1.,229.339484590739; 537P 338 -124,-1.,0.,0.,-6.35,0.,1.,0.,221.357543335921,0.,0.,1., 539P 339 -217.074551097207; 539P 340 -124,-1.,0.,0.,-6.35,0.,1.,0.,221.357543335921,0.,0.,1., 541P 341 -169.830551097207; 541P 342 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 543P 343 -226.134624262077,-3.52495810318487D-15,0.,-1.,182.095484590739; 543P 344 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 545P 345 -275.639224262078,-3.52495810318487D-15,0.,-1.,229.339484590739; 545P 346 -124,-1.,0.,0.,-6.35,0.,1.,0.,270.862143335921,0.,0.,1., 547P 347 -217.074551097207; 547P 348 -124,-1.,0.,0.,-6.35,0.,1.,0.,270.862143335921,0.,0.,1., 549P 349 -169.830551097207; 549P 350 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 551P 351 -275.639224262078,-3.52495810318487D-15,0.,-1.,182.095484590739; 551P 352 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 553P 353 -321.689424262078,-3.52495810318487D-15,0.,-1.,182.095484590739; 553P 354 -124,-1.,0.,0.,-6.35,0.,1.,0.,316.912343335921,0.,0.,1., 555P 355 -169.830551097207; 555P 356 -124,-1.,0.,3.52495810318487D-15,9.16618389353644,0.,1.,0., 557P 357 -321.689424262078,-3.52495810318487D-15,0.,-1.,229.339484590739; 557P 358 -124,-1.,0.,0.,-6.35,0.,1.,0.,316.912343335921,0.,0.,1., 559P 359 -217.074551097207; 559P 360 -124,1.,0.,0.,6.35,0.,1.,0.,0.,0.,0.,1.,25.4; 561P 361 -124,1.,0.,0.,3.175,0.,1.,0.,6.35,0.,0.,1.,28.575; 563P 362 -124,1.,0.,0.,3.175,0.,1.,0.,336.55,0.,0.,1.,28.575; 565P 363 -124,1.,0.,0.,3.175,0.,1.,0.,254.,0.,0.,1.,28.575; 567P 364 -124,1.,0.,0.,3.175,0.,1.,0.,247.08526184492,0.,0.,1.,0.; 569P 365 -124,1.,0.,0.,149.833046088736,0.,1.,0.,254.,0.,0.,1.,28.575; 571P 366 -124,1.,0.,0.,149.865130406712,0.,1.,0.,88.8994001657447,0.,0., 573P 367 -1.,28.575; 573P 368 -124,1.,0.,0.,3.175,0.,1.,0.,81.9852651203429,0.,0.,1.,0.; 575P 369 -124,1.,0.,0.,3.175,0.,1.,0.,171.45,0.,0.,1.,28.575; 577P 370 -124,1.,0.,0.,3.175,0.,1.,0.,88.9,0.,0.,1.,28.575; 579P 371 -124,1.,0.,0.,260.35,0.,1.,0.,0.,0.,0.,1.,28.575; 581P 372 -124,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,25.4; 583P 373 -124,1.,0.,0.,-6.35,0.,1.,0.,0.,0.,0.,1.,-25.4; 585P 374 -124,1.,0.,0.,215.9,0.,1.,0.,0.,0.,0.,1.,0.; 587P 375 -124,1.,0.,0.,0.,0.,1.,0.,358.775,0.,0.,1.,0.; 589P 376 -124,1.,0.,0.,0.,0.,1.,0.,9.525,0.,0.,1.,41.275; 591P 377 -124,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.245098475030291; 593P 378 -124,1.,0.,0.,50.8,0.,1.,0.,-9.525,0.,0.,1.,53.975; 595P 379 -124,1.,0.,0.,5.10377837888056,0.,1.,0.,29.4307516136889,0.,0., 597P 380 -1.,0.; 597P 381 -124,1.,0.,0.,5.10377837888056,0.,1.,0.,125.091858931316,0.,0., 599P 382 -1.,0.; 599P 383 -124,1.,0.,0.,13.8938,0.,1.,0.,-7.89590615113411D-14,0.,0.,1., 601P 384 -17.8562; 601P 385 -124,7.21644966006352D-16,-1.,0.,32.9525998067393,1., 603P 386 -7.21644966006352D-16,0.,29.8291395193544,0.,0.,1., 603P 387 -586.47840019645; 603P 388 -124,-2.24820162486594D-15,-1.,-5.06539254985228D-16, 605P 389 -32.7988125160164,-5.41233724504763D-16,5.06539254985229D-16,-1., 605P 390 -152.866739519355,-1.,2.24820162486594D-15,5.41233724504764D-16, 605P 391 -632.090928249029; 605P 392 -124,0.,0.,-1.,0.,-1.,0.,0.,21.4683396634562,0.,1.,0., 607P 393 -30.5012959899812; 607P 394 -124,1.,0.,0.,-23.715,0.,1.,0.,8.88305374444627,0.,0.,1.,0.; 609P 395 -124,1.,0.,0.,0.408378971925516,0.,1.,0.,0.,0.,0.,1.,-6.12; 611P 396 -124,1.,0.,0.,29.835,0.,1.,0.,7.14,0.,0.,1.,44.37; 613P 397 -124,1.,0.,0.,-40.9899999999999,0.,1.,0.,-18.75,0.,0.,1.,-18.75; 615P 398 -124,-1.58388478626406D-30,4.44089209850063D-16,1., 617P 399 -18.8222574728871,-1.346145417358D-15,1.,-4.44089209850063D-16, 617P 400 -43.0222374170586,-1.,-1.346145417358D-15,-9.86076131526265D-31, 617P 401 -431.18840019645; 617P 402 -124,-1.16403205838765D-30,-3.88578058618805D-16,1., 619P 403 -17.4661305140684,-1.346145417358D-15,-1.,-3.88578058618805D-16, 619P 404 -139.212164907056,-1.,1.346145417358D-15,-6.40949485492072D-31, 619P 405 -431.18840019645; 619P 406 -124,1.,0.,0.,5.12030000355442,0.,1.,0.,29.5345267268414,0.,0., 621P 407 -1.,134.53840019645; 621P 408 -124,1.,0.,0.,5.12030000355442,0.,1.,0.,125.001036008906,0.,0., 623P 409 -1.,134.53840019645; 623P 410 -124,-1.,0.,0.,109.120550136822,0.,1.,0.,124.977984971526,0.,0., 625P 411 -1.,152.574660918868; 625P 412 -124,-1.,0.,0.,109.120550136822,0.,1.,0.,29.4250380505824,0.,0., 627P 413 -1.,152.574660918868; 627P 414 -124,2.35922392732846D-16,0.,1.,94.7054402039212,0.,1.,0., 629P 415 -138.309297881777,-1.,0.,2.35922392732846D-16,253.575950389398; 629P 416 -124,2.35922392732846D-16,0.,1.,94.7054402039212,0.,1.,0., 631P 417 -42.8720946640993,-1.,0.,2.35922392732846D-16,253.575950389398; 631P 418 -124,1.,0.,0.,8.36142082223266,0.,1.,0.,128.242156827584,0.,0., 633P 419 -1.,39.2884001964498; 633P 420 -124,1.,0.,0.,8.34610000355438,0.,1.,0.,32.7603267268414,0.,0., 635P 421 -1.,39.2884001964498; 635P 422 -124,1.,0.,0.,8.33861251601627,0.,1.,0.,56.4229395193545,0.,0., 637P 423 -1.,607.630728249028; 637P 424 -124,1.,0.,0.,8.42062693304106,0.,1.,0.,32.916,0.,0.,1., 639P 425 -453.12840019645; 639P 426 -124,1.,0.,0.,8.24170510393966,0.,1.,0.,128.309632107278,0.,0., 641P 427 -1.,453.097128249028; 641P 428 -124,1.,0.,0.,8.46631201174024,0.,1.,0.,32.9463120117401,0.,0., 643P 429 -1.,178.98840019645; 643P 430 -124,1.,0.,0.,8.46631201174024,0.,1.,0.,128.381334436111,0.,0., 645P 431 -1.,178.98840019645; 645P 432 -124,1.,0.,0.,31.7141000035544,0.,1.,0.,128.238975710582,0.,0., 647P 433 -1.,155.632539898126; 647P 434 -124,1.,0.,0.,31.7141000035544,0.,1.,0.,32.8099752414476,0.,0., 649P 435 -1.,155.632539898126; 649P 436 -124,1.,0.,0.,84.5697440541021,0.,1.,0.,128.214778888805,0.,0., 651P 437 -1.,191.868460918868; 651P 438 -124,1.,0.,0.,84.5636084550983,0.,1.,0.,32.6556963688585,0.,0., 653P 439 -1.,191.868460918868; 653P 440 -124,1.,0.,0.,84.4872045822415,0.,1.,0.,32.6538590424196,0.,0., 655P 441 -1.,275.515950389398; 655P 442 -124,1.,0.,0.,84.4872045822415,0.,1.,0.,127.962350306985,0.,0., 657P 443 -1.,275.515950389398; 657P 444 -124,1.,0.,0.,-4.67931975825933,0.,1.,0.,-1.34101452058832,0.,0., 659P 445 -1.,33.9196850596502; 659P 446 -124,1.,0.,0.,-4.67931975825931,0.,1.,0.,166.692981110505,0.,0., 661P 447 -1.,33.9196850596502; 661P 448 -308,0,19HBarbed Tube Fitting,0; 663P 449 -308,0,26HLarge Plastic Routing Clip,0; 665P 450 -308,0,8HGroup#65,0; 667P 451 -308,1,24HStainless Steel Wing Nut,1,257; 669P 452 -308,0,24HPlastic-Head Thumb Screw,0; 671P 453 -308,0,8HGroup#64,0; 673P 454 -308,2,17H2 NPT Float Valve,4,259,261,263,265; 675P 455 -308,0,7HGroup#1,0; 677P 456 -308,0,7HGroup#4,0; 679P 457 -308,0,7HGroup#5,0; 681P 458 -308,0,8HGroup#11,0; 683P 459 -308,1,8HGroup#13,1,345; 685P 460 -308,0,7HGroup#6,0; 687P 461 -308,0,7HGroup#9,0; 689P 462 -308,0,8HGroup#10,0; 691P 463 -308,0,7HGroup#7,0; 693P 464 -308,0,7HGroup#8,0; 695P 465 -308,1,8HGroup#12,1,359; 697P 466 -308,0,7HGroup#3,0; 699P 467 -308,0,7HGroup#2,0; 701P 468 -308,2,8HGroup#14,12,339,341,343,347,349,351,353,355,357,361,363, 703P 469 -365; 703P 470 -308,0,8HGroup#61,0; 705P 471 -308,0,8HGroup#60,0; 707P 472 -308,0,8HGroup#58,0; 709P 473 -308,0,8HGroup#59,0; 711P 474 -308,1,8HGroup#62,4,369,371,373,375; 713P 475 -308,0,17H2" PVC Pipe Elbow,0; 715P 476 -308,0,8HGroup#15,0; 717P 477 -308,1,15H2" PVC Pipe Tee,1,383; 719P 478 -308,0,2H2",0; 721P 479 -308,1,8HGroup#35,1,389; 723P 480 -308,0,8HGroup#33,0; 725P 481 -308,0,8HGroup#32,0; 727P 482 -308,1,8HGroup#37,2,393,395; 729P 483 -308,2,12HLlave Bola 0,2,391,397; 731P 484 -308,3,18H2" PVC Ball Valves,1,399; 733P 485 -308,0,8HGroup#46,0; 735P 486 -308,0,8HGroup#45,0; 737P 487 -308,0,8HGroup#16,0; 739P 488 -308,0,8HGroup#38,0; 741P 489 -308,0,8HGroup#39,0; 743P 490 -308,0,8HGroup#40,0; 745P 491 -308,0,8HGroup#41,0; 747P 492 -308,0,8HGroup#42,0; 749P 493 -308,0,8HGroup#43,0; 751P 494 -308,0,8HGroup#44,0; 753P 495 -308,4,8HGroup#57,25,379,381,385,387,401,403,405,407,409,411,413, 755P 496 -415,417,419,421,423,425,427,429,431,433,435,437,439,441; 755P 497 -S 1G 3D 756P 497 T 1 diff --git a/aide_design/unit_process_draw/unit_process_civilwork.py b/aide_design/unit_process_draw/unit_process_civilwork.py deleted file mode 100644 index 6b2bad82..00000000 --- a/aide_design/unit_process_draw/unit_process_civilwork.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 16:22:29 2017 - -@author: cc2467 -""" - diff --git a/aide_design/unit_process_draw/unit_process_prefab.py b/aide_design/unit_process_draw/unit_process_prefab.py deleted file mode 100644 index 9bc620e5..00000000 --- a/aide_design/unit_process_draw/unit_process_prefab.py +++ /dev/null @@ -1,7 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Thu Aug 10 16:22:57 2017 - -@author: cc2467 -""" - diff --git a/setup.py b/setup.py index 54552182..bc00318d 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,14 @@ -from setuptools import setup +from setuptools import setup, find_packages setup(name='aide_design', - version='v0.0.2', + version='0.0.3', description='AguaClara Infrastructure Design Engine', url='https://github.com/AguaClara/aguaclara_design', author='AguaClara at Cornell', author_email='aguaclara@cornell.edu', license='MIT', - packages=['aide_design'], + packages=find_packages(), install_requires=['pint','numpy','pandas','matplotlib'], include_package_data=True, + test_suite="tests", zip_safe=False) \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_lfom.py b/tests/test_lfom.py new file mode 100644 index 00000000..dd5ebca2 --- /dev/null +++ b/tests/test_lfom.py @@ -0,0 +1,28 @@ +import unittest +import numpy as np + +import pandas as pd + +import matplotlib.pyplot as plt + +from aide_design import physchem as pc + +from aide_design import expert_inputs as exp + +from aide_design import utility as ut + +from aide_design.units import unit_registry as u + +from aide_design.unit_process_design.prefab import lfom_prefab_functional as lfom + + +class LfomTest(unittest.TestCase): + def test_orifice_diameter(self): + FLOW = 31 * u.L / u.s + HL_LFOM = 20 * u.cm + drill_bits = np.arange(5, 25, 5) * u.mm + self.assertEqual(lfom.orifice_diameter(FLOW,HL_LFOM,drill_bits), 15* u.mm) + + +if __name__ == '__main__': + unittest.main() diff --git a/aide_design/Unit Tests/test_physchem.py b/tests/test_physchem.py similarity index 100% rename from aide_design/Unit Tests/test_physchem.py rename to tests/test_physchem.py diff --git a/aide_design/Unit Tests/test_pipedatabase.py b/tests/test_pipedatabase.py similarity index 100% rename from aide_design/Unit Tests/test_pipedatabase.py rename to tests/test_pipedatabase.py