processpi 0.2.0.4__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {processpi-0.2.0.4 → processpi-0.2.2}/PKG-INFO +4 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/README.md +3 -2
- processpi-0.2.2/processpi/__main__.py +5 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/engine.py +7 -0
- processpi-0.2.2/processpi/calculations/heat_transfer/__init__.py +92 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/conduction_heat_loss.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/convection_heat_loss.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/crossflow_tube.py +2 -0
- processpi-0.2.2/processpi/calculations/heat_transfer/heat_exchanger.py +167 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/heat_exchanger_area.py +3 -1
- processpi-0.2.2/processpi/calculations/heat_transfer/hx_kern.py +285 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/lmtd.py +15 -2
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/mass_transfer/distillation_stage_count.py +22 -8
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/reaction_engineering/catalyst_activity.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/reaction_engineering/reaction_rate.py +2 -2
- processpi-0.2.2/processpi/cli.py +13 -0
- processpi-0.2.2/processpi/components/_112trichloroethane.py +57 -0
- processpi-0.2.2/processpi/components/_11dibromoethane.py +57 -0
- processpi-0.2.2/processpi/components/_11dichloroethane.py +57 -0
- processpi-0.2.2/processpi/components/_11dichloropropane.py +57 -0
- processpi-0.2.2/processpi/components/_11difluoroethane.py +95 -0
- processpi-0.2.2/processpi/components/_11dimethoxyethane.py +57 -0
- processpi-0.2.2/processpi/components/_11dimethylcyclohexane.py +57 -0
- processpi-0.2.2/processpi/components/_123trimethylbenzene.py +57 -0
- processpi-0.2.2/processpi/components/_124tetrahydronaphthalene.py +57 -0
- processpi-0.2.2/processpi/components/_124trimethylbenzene.py +57 -0
- processpi-0.2.2/processpi/components/_12butadiene.py +57 -0
- processpi-0.2.2/processpi/components/_12butanediol.py +74 -0
- processpi-0.2.2/processpi/components/_12dibromoethane.py +57 -0
- processpi-0.2.2/processpi/components/_12dichloroethane.py +57 -0
- processpi-0.2.2/processpi/components/_12dichloropropane.py +57 -0
- processpi-0.2.2/processpi/components/_12difluoroethane.py +57 -0
- processpi-0.2.2/processpi/components/_12dimethoxypropane.py +57 -0
- processpi-0.2.2/processpi/components/_12propyleneglycol.py +57 -0
- processpi-0.2.2/processpi/components/_135trinitrobenzene.py +57 -0
- processpi-0.2.2/processpi/components/_13butadiene.py +57 -0
- processpi-0.2.2/processpi/components/_13butanediol.py +74 -0
- processpi-0.2.2/processpi/components/_14dioxane.py +57 -0
- processpi-0.2.2/processpi/components/_1butanol.py +57 -0
- processpi-0.2.2/processpi/components/_1butene.py +57 -0
- processpi-0.2.2/processpi/components/_1butyne.py +57 -0
- processpi-0.2.2/processpi/components/_1chloropropane.py +57 -0
- processpi-0.2.2/processpi/components/_1decanol.py +57 -0
- processpi-0.2.2/processpi/components/_1decene.py +57 -0
- processpi-0.2.2/processpi/components/_1decyne.py +57 -0
- processpi-0.2.2/processpi/components/_1heptanol.py +57 -0
- processpi-0.2.2/processpi/components/_1heptene.py +57 -0
- processpi-0.2.2/processpi/components/_1heptyne.py +57 -0
- processpi-0.2.2/processpi/components/_1hexanol.py +57 -0
- processpi-0.2.2/processpi/components/_1hexene.py +57 -0
- processpi-0.2.2/processpi/components/_1hexyne.py +57 -0
- processpi-0.2.2/processpi/components/_1methylcyclohexanol.py +57 -0
- processpi-0.2.2/processpi/components/_1methylcyclopentene.py +57 -0
- processpi-0.2.2/processpi/components/_1nonanol.py +57 -0
- processpi-0.2.2/processpi/components/_1nonene.py +57 -0
- processpi-0.2.2/processpi/components/_1nonyne.py +57 -0
- processpi-0.2.2/processpi/components/_1octanol.py +57 -0
- processpi-0.2.2/processpi/components/_1octene.py +57 -0
- processpi-0.2.2/processpi/components/_1octyne.py +57 -0
- processpi-0.2.2/processpi/components/_1pentanol.py +57 -0
- processpi-0.2.2/processpi/components/_1pentene.py +57 -0
- processpi-0.2.2/processpi/components/_1pentyne.py +57 -0
- processpi-0.2.2/processpi/components/_1propanol.py +65 -0
- processpi-0.2.2/processpi/components/_1undecanol.py +57 -0
- processpi-0.2.2/processpi/components/_2233tetramethylbutane.py +57 -0
- processpi-0.2.2/processpi/components/_224trimethylpentane.py +57 -0
- processpi-0.2.2/processpi/components/_233trimethylpentane.py +57 -0
- processpi-0.2.2/processpi/components/_23dimethylbutane.py +57 -0
- processpi-0.2.2/processpi/components/_23dimethylpentane.py +57 -0
- processpi-0.2.2/processpi/components/_246trinitrotoluene.py +57 -0
- processpi-0.2.2/processpi/components/_2butanol.py +57 -0
- processpi-0.2.2/processpi/components/_2chloropropane.py +57 -0
- processpi-0.2.2/processpi/components/_2ethylbutanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/_2ethylhexanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/_2heptanol.py +57 -0
- processpi-0.2.2/processpi/components/_2heptanone.py +57 -0
- processpi-0.2.2/processpi/components/_2hexanol.py +57 -0
- processpi-0.2.2/processpi/components/_2hexanone.py +57 -0
- processpi-0.2.2/processpi/components/_2hexyne.py +57 -0
- processpi-0.2.2/processpi/components/_2methyl1butene.py +57 -0
- processpi-0.2.2/processpi/components/_2methyl1butene3yne.py +57 -0
- processpi-0.2.2/processpi/components/_2methyl2butene.py +57 -0
- processpi-0.2.2/processpi/components/_2methyl2propanol.py +57 -0
- processpi-0.2.2/processpi/components/_2methylbutane.py +57 -0
- processpi-0.2.2/processpi/components/_2methylbutanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/_2methyloctanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/_2methylpentane.py +57 -0
- processpi-0.2.2/processpi/components/_2methylpropane.py +57 -0
- processpi-0.2.2/processpi/components/_2methylpropene.py +57 -0
- processpi-0.2.2/processpi/components/_2nonanol.py +57 -0
- processpi-0.2.2/processpi/components/_2octanol.py +57 -0
- processpi-0.2.2/processpi/components/_2octanone.py +57 -0
- processpi-0.2.2/processpi/components/_2pentanol.py +57 -0
- processpi-0.2.2/processpi/components/_2pentanone.py +57 -0
- processpi-0.2.2/processpi/components/_2pentylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/_2pentyne.py +57 -0
- processpi-0.2.2/processpi/components/_2propanol.py +57 -0
- processpi-0.2.2/processpi/components/_2propylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/_3heptanone.py +57 -0
- processpi-0.2.2/processpi/components/_3hexanone.py +57 -0
- processpi-0.2.2/processpi/components/_3hexyne.py +57 -0
- processpi-0.2.2/processpi/components/_3methyl12butadiene.py +57 -0
- processpi-0.2.2/processpi/components/_3methyl1butanol.py +57 -0
- processpi-0.2.2/processpi/components/_3methyl1butyne.py +57 -0
- processpi-0.2.2/processpi/components/_3methylcyclopentene.py +57 -0
- processpi-0.2.2/processpi/components/_3octanone.py +57 -0
- processpi-0.2.2/processpi/components/_3pentanone.py +57 -0
- processpi-0.2.2/processpi/components/__init__.py +719 -0
- processpi-0.2.2/processpi/components/acetaldehyde.py +60 -0
- processpi-0.2.2/processpi/components/acetamide.py +58 -0
- processpi-0.2.2/processpi/components/acetic_anhydride.py +58 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/aceticacid.py +6 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/acetone.py +6 -0
- processpi-0.2.2/processpi/components/acetonitrile.py +57 -0
- processpi-0.2.2/processpi/components/acetylene.py +57 -0
- processpi-0.2.2/processpi/components/acrolein.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/acrylicacid.py +6 -0
- processpi-0.2.2/processpi/components/acrylonitrile.py +58 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/air.py +20 -0
- processpi-0.2.2/processpi/components/alphamethylstyrene.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/ammonia.py +32 -7
- processpi-0.2.2/processpi/components/anisole.py +57 -0
- processpi-0.2.2/processpi/components/argon.py +57 -0
- processpi-0.2.2/processpi/components/base.py +365 -0
- processpi-0.2.2/processpi/components/benzamide.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/benzene.py +12 -3
- processpi-0.2.2/processpi/components/benzenethiol.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/benzoicacid.py +7 -1
- processpi-0.2.2/processpi/components/benzonitrile.py +57 -0
- processpi-0.2.2/processpi/components/benzophenone.py +57 -0
- processpi-0.2.2/processpi/components/benzylalcohol.py +57 -0
- processpi-0.2.2/processpi/components/benzylethylether.py +57 -0
- processpi-0.2.2/processpi/components/benzylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/biphenyl.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/bromine.py +6 -0
- processpi-0.2.2/processpi/components/bromobenzene.py +57 -0
- processpi-0.2.2/processpi/components/bromoethane.py +57 -0
- processpi-0.2.2/processpi/components/bromomethane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/butane.py +6 -0
- processpi-0.2.2/processpi/components/butylacetate.py +57 -0
- processpi-0.2.2/processpi/components/butylbenzene.py +57 -0
- processpi-0.2.2/processpi/components/butylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/butyraldehyde.py +57 -0
- processpi-0.2.2/processpi/components/butyricacid.py +57 -0
- processpi-0.2.2/processpi/components/butyronitrile.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/carbondioxide.py +6 -0
- processpi-0.2.2/processpi/components/carbondisulfide.py +57 -0
- processpi-0.2.2/processpi/components/carbonmonoxide.py +54 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/carbontetrachloride.py +7 -1
- processpi-0.2.2/processpi/components/carbontetrafluoride.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/chlorine.py +7 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/chlorobenzene.py +7 -1
- processpi-0.2.2/processpi/components/chloroethane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/chloroform.py +7 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/chloromethane.py +7 -1
- processpi-0.2.2/processpi/components/cis12dimethylcyclohexane.py +57 -0
- processpi-0.2.2/processpi/components/cis2butene.py +57 -0
- processpi-0.2.2/processpi/components/cis2methylcyclohexanol.py +57 -0
- processpi-0.2.2/processpi/components/cumene.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/cyanogen.py +7 -1
- processpi-0.2.2/processpi/components/cyclobutane.py +57 -0
- processpi-0.2.2/processpi/components/cyclohexane.py +82 -0
- processpi-0.2.2/processpi/components/cyclohexanol.py +57 -0
- processpi-0.2.2/processpi/components/cyclohexanone.py +57 -0
- processpi-0.2.2/processpi/components/cyclohexene.py +57 -0
- processpi-0.2.2/processpi/components/cyclohexylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/cyclopentane.py +57 -0
- processpi-0.2.2/processpi/components/cyclopentene.py +57 -0
- processpi-0.2.2/processpi/components/cyclopropane.py +57 -0
- processpi-0.2.2/processpi/components/decanal.py +57 -0
- processpi-0.2.2/processpi/components/decane.py +57 -0
- processpi-0.2.2/processpi/components/decanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/decylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/deuterium.py +57 -0
- processpi-0.2.2/processpi/components/dibromomethane.py +57 -0
- processpi-0.2.2/processpi/components/dibutylether.py +57 -0
- processpi-0.2.2/processpi/components/dichloromethane.py +57 -0
- processpi-0.2.2/processpi/components/diethanolamine.py +57 -0
- processpi-0.2.2/processpi/components/diethylamine.py +57 -0
- processpi-0.2.2/processpi/components/diethylether.py +57 -0
- processpi-0.2.2/processpi/components/diethylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/difluoromethane.py +57 -0
- processpi-0.2.2/processpi/components/diisopropylamine.py +57 -0
- processpi-0.2.2/processpi/components/diisopropylether.py +57 -0
- processpi-0.2.2/processpi/components/diisopropylketone.py +57 -0
- processpi-0.2.2/processpi/components/dimethylacetylene.py +57 -0
- processpi-0.2.2/processpi/components/dimethylamine.py +57 -0
- processpi-0.2.2/processpi/components/dimethyldisulfide.py +57 -0
- processpi-0.2.2/processpi/components/dimethylether.py +57 -0
- processpi-0.2.2/processpi/components/dimethylphthalate.py +57 -0
- processpi-0.2.2/processpi/components/dimethylsilane.py +57 -0
- processpi-0.2.2/processpi/components/dimethylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/dimethylsulfoxide.py +57 -0
- processpi-0.2.2/processpi/components/dimethylterephthalate.py +57 -0
- processpi-0.2.2/processpi/components/diphenylether.py +57 -0
- processpi-0.2.2/processpi/components/dipropylamine.py +57 -0
- processpi-0.2.2/processpi/components/dodecane.py +57 -0
- processpi-0.2.2/processpi/components/eicosane.py +57 -0
- processpi-0.2.2/processpi/components/ethane.py +52 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/ethanol.py +6 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/ethylacetate.py +23 -3
- processpi-0.2.2/processpi/components/ethylamine.py +57 -0
- processpi-0.2.2/processpi/components/ethylbenzene.py +57 -0
- processpi-0.2.2/processpi/components/ethylbenzoate.py +57 -0
- processpi-0.2.2/processpi/components/ethylbutyrate.py +57 -0
- processpi-0.2.2/processpi/components/ethylcyclohexane.py +57 -0
- processpi-0.2.2/processpi/components/ethylcyclopentane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/ethylene.py +22 -2
- processpi-0.2.2/processpi/components/ethylenediamine.py +57 -0
- processpi-0.2.2/processpi/components/ethyleneglycol.py +57 -0
- processpi-0.2.2/processpi/components/ethyleneimine.py +57 -0
- processpi-0.2.2/processpi/components/ethyleneoxide.py +57 -0
- processpi-0.2.2/processpi/components/ethylformate.py +57 -0
- processpi-0.2.2/processpi/components/ethylhexylether.py +57 -0
- processpi-0.2.2/processpi/components/ethylisopropylether.py +57 -0
- processpi-0.2.2/processpi/components/ethylisopropylketone.py +57 -0
- processpi-0.2.2/processpi/components/ethylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/ethylpropionate.py +57 -0
- processpi-0.2.2/processpi/components/ethylpropylether.py +57 -0
- processpi-0.2.2/processpi/components/ethyltrichlorosilane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/fluorine.py +6 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/fluorobenzene.py +6 -0
- processpi-0.2.2/processpi/components/fluoroethane.py +57 -0
- processpi-0.2.2/processpi/components/fluoromethane.py +57 -0
- processpi-0.2.2/processpi/components/formaldehyde.py +57 -0
- processpi-0.2.2/processpi/components/formamide.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/formicacid.py +6 -0
- processpi-0.2.2/processpi/components/furan.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/gas.py +9 -0
- processpi-0.2.2/processpi/components/helium.py +101 -0
- processpi-0.2.2/processpi/components/heptadecane.py +57 -0
- processpi-0.2.2/processpi/components/heptanal.py +57 -0
- processpi-0.2.2/processpi/components/heptane.py +96 -0
- processpi-0.2.2/processpi/components/heptanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/heptylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/hexadecane.py +57 -0
- processpi-0.2.2/processpi/components/hexanal.py +57 -0
- processpi-0.2.2/processpi/components/hexane.py +57 -0
- processpi-0.2.2/processpi/components/hexanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/hexylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/hydrazine.py +57 -0
- processpi-0.2.2/processpi/components/hydrogen.py +95 -0
- processpi-0.2.2/processpi/components/hydrogenbromide.py +57 -0
- processpi-0.2.2/processpi/components/hydrogenchloride.py +84 -0
- processpi-0.2.2/processpi/components/hydrogencyanide.py +83 -0
- processpi-0.2.2/processpi/components/hydrogenfluoride.py +57 -0
- processpi-0.2.2/processpi/components/hydrogensulfide.py +102 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/inorganic_liquid.py +7 -0
- processpi-0.2.2/processpi/components/isobutyricacid.py +57 -0
- processpi-0.2.2/processpi/components/isopropylamine.py +57 -0
- processpi-0.2.2/processpi/components/malonicacid.py +57 -0
- processpi-0.2.2/processpi/components/mcresol.py +57 -0
- processpi-0.2.2/processpi/components/mdichlorobenzene.py +57 -0
- processpi-0.2.2/processpi/components/methacrylicacid.py +57 -0
- processpi-0.2.2/processpi/components/methane.py +101 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/methanol.py +6 -0
- processpi-0.2.2/processpi/components/methylacetate.py +57 -0
- processpi-0.2.2/processpi/components/methylacetylene.py +57 -0
- processpi-0.2.2/processpi/components/methylacrylate.py +57 -0
- processpi-0.2.2/processpi/components/methylamine.py +57 -0
- processpi-0.2.2/processpi/components/methylbenzoate.py +57 -0
- processpi-0.2.2/processpi/components/methylbutylether.py +57 -0
- processpi-0.2.2/processpi/components/methylbutylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/methylbutyrate.py +57 -0
- processpi-0.2.2/processpi/components/methylchlorosilane.py +57 -0
- processpi-0.2.2/processpi/components/methylcyclohexane.py +57 -0
- processpi-0.2.2/processpi/components/methylcyclopentane.py +57 -0
- processpi-0.2.2/processpi/components/methyldichlorosilane.py +57 -0
- processpi-0.2.2/processpi/components/methylethylether.py +57 -0
- processpi-0.2.2/processpi/components/methylethylketone.py +57 -0
- processpi-0.2.2/processpi/components/methylethylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/methylformate.py +57 -0
- processpi-0.2.2/processpi/components/methylisobutylether.py +57 -0
- processpi-0.2.2/processpi/components/methylisobutylketone.py +57 -0
- processpi-0.2.2/processpi/components/methylisocyanate.py +57 -0
- processpi-0.2.2/processpi/components/methylisopropylether.py +57 -0
- processpi-0.2.2/processpi/components/methylisopropylketone.py +57 -0
- processpi-0.2.2/processpi/components/methylisopropylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/methylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/methylmethacrylate.py +57 -0
- processpi-0.2.2/processpi/components/methylpentylether.py +57 -0
- processpi-0.2.2/processpi/components/methylpropionate.py +57 -0
- processpi-0.2.2/processpi/components/methylpropylether.py +57 -0
- processpi-0.2.2/processpi/components/methylpropylsulfide.py +57 -0
- processpi-0.2.2/processpi/components/methylsilane.py +57 -0
- processpi-0.2.2/processpi/components/methyltertbutylether.py +57 -0
- processpi-0.2.2/processpi/components/methylvinylether.py +57 -0
- processpi-0.2.2/processpi/components/mxylene.py +57 -0
- processpi-0.2.2/processpi/components/naphthalene.py +57 -0
- processpi-0.2.2/processpi/components/neon.py +99 -0
- processpi-0.2.2/processpi/components/nitricoxide.py +104 -0
- processpi-0.2.2/processpi/components/nitroethane.py +57 -0
- processpi-0.2.2/processpi/components/nitrogen.py +84 -0
- processpi-0.2.2/processpi/components/nitrogentrifluoride.py +57 -0
- processpi-0.2.2/processpi/components/nitromethane.py +57 -0
- processpi-0.2.2/processpi/components/nitrousoxide.py +86 -0
- processpi-0.2.2/processpi/components/nmethylacetamide.py +57 -0
- processpi-0.2.2/processpi/components/nndimethylformamide.py +57 -0
- processpi-0.2.2/processpi/components/nonadecane.py +57 -0
- processpi-0.2.2/processpi/components/nonanal.py +57 -0
- processpi-0.2.2/processpi/components/nonane.py +57 -0
- processpi-0.2.2/processpi/components/nonanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/nonylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/ocresol.py +57 -0
- processpi-0.2.2/processpi/components/octadecane.py +57 -0
- processpi-0.2.2/processpi/components/octanal.py +57 -0
- processpi-0.2.2/processpi/components/octane.py +57 -0
- processpi-0.2.2/processpi/components/octanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/octylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/odichlorobenzene.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/oil.py +12 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/organic_liquid.py +12 -3
- processpi-0.2.2/processpi/components/oterphenyl.py +57 -0
- processpi-0.2.2/processpi/components/oxalicacid.py +57 -0
- processpi-0.2.2/processpi/components/oxygen.py +86 -0
- processpi-0.2.2/processpi/components/oxylene.py +57 -0
- processpi-0.2.2/processpi/components/ozone.py +86 -0
- processpi-0.2.2/processpi/components/pcresol.py +57 -0
- processpi-0.2.2/processpi/components/pdichlorobenzene.py +57 -0
- processpi-0.2.2/processpi/components/pentadecane.py +57 -0
- processpi-0.2.2/processpi/components/pentanal.py +57 -0
- processpi-0.2.2/processpi/components/pentane.py +57 -0
- processpi-0.2.2/processpi/components/pentanoicacid.py +57 -0
- processpi-0.2.2/processpi/components/pentylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/phenanthrene.py +57 -0
- processpi-0.2.2/processpi/components/phenol.py +84 -0
- processpi-0.2.2/processpi/components/phenylisocyanate.py +57 -0
- processpi-0.2.2/processpi/components/phthalicanhydride.py +57 -0
- processpi-0.2.2/processpi/components/propadiene.py +57 -0
- processpi-0.2.2/processpi/components/propane.py +101 -0
- processpi-0.2.2/processpi/components/propenylcyclohexene.py +57 -0
- processpi-0.2.2/processpi/components/propionaldehyde.py +57 -0
- processpi-0.2.2/processpi/components/propionicacid.py +81 -0
- processpi-0.2.2/processpi/components/propionitrile.py +57 -0
- processpi-0.2.2/processpi/components/propylacetate.py +57 -0
- processpi-0.2.2/processpi/components/propylamine.py +57 -0
- processpi-0.2.2/processpi/components/propylbenzene.py +57 -0
- processpi-0.2.2/processpi/components/propylene.py +57 -0
- processpi-0.2.2/processpi/components/propylformate.py +57 -0
- processpi-0.2.2/processpi/components/propylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/pxylene.py +57 -0
- processpi-0.2.2/processpi/components/quinone.py +57 -0
- processpi-0.2.2/processpi/components/sebutylmercaptan.py +57 -0
- processpi-0.2.2/processpi/components/silicontetrafluoride.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/steam.py +26 -4
- processpi-0.2.2/processpi/components/styrene.py +81 -0
- processpi-0.2.2/processpi/components/succinicacid.py +57 -0
- processpi-0.2.2/processpi/components/sulfurdioxide.py +84 -0
- processpi-0.2.2/processpi/components/sulfurhexafluoride.py +57 -0
- processpi-0.2.2/processpi/components/sulfurtrioxide.py +57 -0
- processpi-0.2.2/processpi/components/terephthalicacid.py +57 -0
- processpi-0.2.2/processpi/components/tetradecane.py +57 -0
- processpi-0.2.2/processpi/components/tetrahydrofuran.py +57 -0
- processpi-0.2.2/processpi/components/tetrahydrothiophene.py +57 -0
- processpi-0.2.2/processpi/components/thiophene.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/toluene.py +11 -2
- processpi-0.2.2/processpi/components/trans12dimethylcyclohexane.py +57 -0
- processpi-0.2.2/processpi/components/trans2butene.py +57 -0
- processpi-0.2.2/processpi/components/trans2methylcyclohexanol.py +57 -0
- processpi-0.2.2/processpi/components/tridecane.py +57 -0
- processpi-0.2.2/processpi/components/triethylamine.py +57 -0
- processpi-0.2.2/processpi/components/trimethylamine.py +57 -0
- processpi-0.2.2/processpi/components/undecane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/vapor.py +9 -0
- processpi-0.2.2/processpi/components/vinylacetate.py +57 -0
- processpi-0.2.2/processpi/components/vinylacetylene.py +57 -0
- processpi-0.2.2/processpi/components/vinylchloride.py +57 -0
- processpi-0.2.2/processpi/components/vinyltrichlorosilane.py +57 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/water.py +25 -0
- processpi-0.2.2/processpi/equipment/__init__.py +23 -0
- processpi-0.2.2/processpi/equipment/base.py +120 -0
- processpi-0.2.2/processpi/equipment/distillation/__init__.py +6 -0
- processpi-0.2.2/processpi/equipment/distillation/column.py +643 -0
- processpi-0.2.2/processpi/equipment/distillation/engine.py +105 -0
- processpi-0.2.2/processpi/equipment/distillation/hydraulics.py +97 -0
- processpi-0.2.2/processpi/equipment/distillation/mccabe_thiele.py +101 -0
- processpi-0.2.2/processpi/equipment/distillation/results.py +110 -0
- processpi-0.2.2/processpi/equipment/distillation/shortcut.py +212 -0
- processpi-0.2.2/processpi/equipment/distillation/vle.py +289 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/__init__.py +20 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/base.py +1305 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/bell_delaware.py +31 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/condenser.py +383 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/datasheet.py +385 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/double_pipe.py +520 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/engine.py +759 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/evaporator.py +1080 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/reboiler.py +103 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/shell_and_tube.py +3618 -0
- processpi-0.2.2/processpi/equipment/heatexchangers/standards.py +1273 -0
- processpi-0.2.2/processpi/equipment/pressure_vessel.py +2425 -0
- processpi-0.2.2/processpi/integration/flowsheet.py +181 -0
- processpi-0.2.2/processpi/pipelines/engine.py +2555 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/fittings.py +12 -4
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/network.py +57 -10
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/pipelineresults.py +114 -17
- processpi-0.2.2/processpi/pipelines/pipes.py +325 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/piping_costs.py +1 -1
- processpi-0.2.2/processpi/pipelines/standards.py +685 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/streams/material.py +20 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/area.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/base.py +9 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/density.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/diameter.py +4 -4
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/dimensionless.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/heat_flow.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/heat_flux.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/heat_of_vaporization.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/heat_transfer_coefficient.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/length.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/mass.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/mass_flowrate.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/molar_flowrate.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/power.py +1 -1
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/pressure.py +19 -8
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/specific_heat.py +10 -10
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/strings.py +4 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/thermal_conductivity.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/thermal_resistance.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/velocity.py +2 -2
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/viscosity.py +2 -2
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/volume.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/volumetric_flowrate.py +3 -3
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi.egg-info/PKG-INFO +4 -3
- processpi-0.2.2/processpi.egg-info/SOURCES.txt +549 -0
- processpi-0.2.2/processpi.egg-info/entry_points.txt +2 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/pyproject.toml +34 -38
- {processpi-0.2.0.4 → processpi-0.2.2}/setup.py +8 -8
- processpi-0.2.2/tests/test_bell_delaware_hx.py +112 -0
- processpi-0.2.2/tests/test_bell_delaware_taborek.py +256 -0
- processpi-0.2.2/tests/test_component_data_followups.py +365 -0
- processpi-0.2.2/tests/test_component_example_fixes.py +200 -0
- processpi-0.2.2/tests/test_component_hx_data.py +118 -0
- processpi-0.2.2/tests/test_component_vp_formulas.py +99 -0
- processpi-0.2.2/tests/test_components_exports.py +76 -0
- processpi-0.2.2/tests/test_crash_regressions.py +119 -0
- processpi-0.2.2/tests/test_distillation_column.py +387 -0
- processpi-0.2.2/tests/test_distillation_engine.py +86 -0
- processpi-0.2.2/tests/test_distillation_shortcut.py +214 -0
- processpi-0.2.2/tests/test_distillation_stage_count.py +44 -0
- processpi-0.2.2/tests/test_engine_network.py +93 -0
- processpi-0.2.2/tests/test_heatexchanger_engine_dispatch.py +129 -0
- processpi-0.2.2/tests/test_heatexchanger_flowsheet.py +243 -0
- processpi-0.2.2/tests/test_heatexchanger_fluid_assignment.py +446 -0
- processpi-0.2.2/tests/test_heatexchanger_tabular_result.py +63 -0
- processpi-0.2.2/tests/test_heatexchanger_type_selection.py +140 -0
- processpi-0.2.2/tests/test_hx_calculation_aliases.py +277 -0
- processpi-0.2.2/tests/test_hx_correlations.py +469 -0
- processpi-0.2.2/tests/test_hx_datasheet.py +33 -0
- processpi-0.2.2/tests/test_hx_design_phase_change_service.py +306 -0
- processpi-0.2.2/tests/test_hx_diagnostics.py +378 -0
- processpi-0.2.2/tests/test_hx_ft_correction_factor.py +212 -0
- processpi-0.2.2/tests/test_hx_hydraulic_verdict.py +220 -0
- processpi-0.2.2/tests/test_hx_rating_phase_change.py +266 -0
- processpi-0.2.2/tests/test_hx_shell_side_geometry.py +274 -0
- processpi-0.2.2/tests/test_hx_small_fixes.py +159 -0
- processpi-0.2.2/tests/test_hx_summary.py +244 -0
- processpi-0.2.2/tests/test_hx_tube_selector.py +145 -0
- processpi-0.2.2/tests/test_hx_u_basis.py +409 -0
- processpi-0.2.2/tests/test_hx_viscosity_temperature.py +80 -0
- processpi-0.2.2/tests/test_hx_warnings.py +185 -0
- processpi-0.2.2/tests/test_import_hygiene.py +60 -0
- processpi-0.2.2/tests/test_integration_flowsheet_ports.py +70 -0
- processpi-0.2.2/tests/test_missing_compounds.py +333 -0
- processpi-0.2.2/tests/test_network.py +89 -0
- processpi-0.2.2/tests/test_phase_above_critical.py +52 -0
- processpi-0.2.2/tests/test_pipe_schedule_table.py +123 -0
- processpi-0.2.2/tests/test_pipeline_api_fixes.py +115 -0
- processpi-0.2.2/tests/test_pipeline_diameters.py +337 -0
- processpi-0.2.2/tests/test_pipeline_engine_cleanup.py +108 -0
- processpi-0.2.2/tests/test_pipeline_fitting_losses.py +274 -0
- processpi-0.2.2/tests/test_pipeline_graph_network.py +849 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/tests/test_pipeline_network.py +13 -13
- processpi-0.2.2/tests/test_pipeline_network_sizing.py +365 -0
- processpi-0.2.2/tests/test_pipeline_network_solver.py +176 -0
- processpi-0.2.2/tests/test_pipeline_sizing.py +116 -0
- processpi-0.2.2/tests/test_pressure_vessel.py +66 -0
- processpi-0.2.2/tests/test_pressure_vessel_asme_formulas.py +229 -0
- processpi-0.2.2/tests/test_pressure_vessel_engine.py +196 -0
- processpi-0.2.2/tests/test_shell_tube_kern_bell_workflow.py +89 -0
- processpi-0.2.2/tests/test_stream_state_properties.py +186 -0
- processpi-0.2.2/tests/test_unit_system.py +235 -0
- processpi-0.2.2/tests/test_vapor_placeholder.py +127 -0
- processpi-0.2.2/tests/test_variables.py +110 -0
- processpi-0.2.0.4/processpi/calculations/heat_transfer/__init__.py +0 -59
- processpi-0.2.0.4/processpi/components/__init__.py +0 -40
- processpi-0.2.0.4/processpi/components/base.py +0 -204
- processpi-0.2.0.4/processpi/components/carbonmonoxide.py +0 -28
- processpi-0.2.0.4/processpi/components/cyclohexene.py +0 -17
- processpi-0.2.0.4/processpi/components/ethane.py +0 -27
- processpi-0.2.0.4/processpi/equipment/__init__.py +0 -21
- processpi-0.2.0.4/processpi/equipment/absorber.py +0 -67
- processpi-0.2.0.4/processpi/equipment/base.py +0 -57
- processpi-0.2.0.4/processpi/equipment/batch.py +0 -39
- processpi-0.2.0.4/processpi/equipment/compressor.py +0 -80
- processpi-0.2.0.4/processpi/equipment/cstr.py +0 -41
- processpi-0.2.0.4/processpi/equipment/decanter.py +0 -61
- processpi-0.2.0.4/processpi/equipment/distillation.py +0 -82
- processpi-0.2.0.4/processpi/equipment/flash.py +0 -84
- processpi-0.2.0.4/processpi/equipment/heater_cooler.py +0 -103
- processpi-0.2.0.4/processpi/equipment/heatexchangers/__init__.py +0 -7
- processpi-0.2.0.4/processpi/equipment/heatexchangers/base.py +0 -129
- processpi-0.2.0.4/processpi/equipment/heatexchangers/examples.py +0 -116
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/__init__.py +0 -53
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/basic_params.py +0 -83
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/bell_method.py +0 -101
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/classification.py +0 -66
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/condenser.py +0 -262
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/double_pipe.py +0 -633
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/evaporator.py +0 -263
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/kern_method.py +0 -112
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/reboiler.py +0 -288
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical/shell_tube.py +0 -686
- processpi-0.2.0.4/processpi/equipment/heatexchangers/mechanical.py +0 -20
- processpi-0.2.0.4/processpi/equipment/heatexchangers/simulation.py +0 -186
- processpi-0.2.0.4/processpi/equipment/heatexchangers/standards.py +0 -118
- processpi-0.2.0.4/processpi/equipment/heatexchangers/utils.py +0 -1
- processpi-0.2.0.4/processpi/equipment/heatexchangers_.py +0 -155
- processpi-0.2.0.4/processpi/equipment/mixer.py +0 -54
- processpi-0.2.0.4/processpi/equipment/pfr.py +0 -44
- processpi-0.2.0.4/processpi/equipment/pumps.py +0 -92
- processpi-0.2.0.4/processpi/equipment/splitter.py +0 -41
- processpi-0.2.0.4/processpi/equipment/stripper.py +0 -67
- processpi-0.2.0.4/processpi/equipment/turbine.py +0 -81
- processpi-0.2.0.4/processpi/equipment/valves.py +0 -112
- processpi-0.2.0.4/processpi/integration/flowsheet.py +0 -150
- processpi-0.2.0.4/processpi/pipelines/engine.py +0 -1736
- processpi-0.2.0.4/processpi/pipelines/pipes.py +0 -162
- processpi-0.2.0.4/processpi/pipelines/standards.py +0 -715
- processpi-0.2.0.4/processpi.egg-info/SOURCES.txt +0 -188
- processpi-0.2.0.4/tests/test_engine_network.py +0 -111
- processpi-0.2.0.4/tests/test_network.py +0 -79
- processpi-0.2.0.4/tests/test_variables.py +0 -93
- {processpi-0.2.0.4 → processpi-0.2.2}/LICENSE +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/base.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/flow_type.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/friction_factor_colebrookwhite.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/optimium_pipe_dia.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/pressure_drop_darcy.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/pressure_drop_fanning.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/pressure_drop_hazen_williams.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/pump_power.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/reynolds_number.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/fluids/velocity.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/biot.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/boiling_chen.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/combined_modes.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/condensation.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/condensation_dropwise.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/condensation_nusselt.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/fourier.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/fourierlaw.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/grashof.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/newton_cooling.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/ntu.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/nusselt.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/overall_u.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/peclet.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/prandtl.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/radial_cylinder.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/radiation_blackbody.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/radiation_exchange.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/radiation_greybody.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/radiation_viewfactor.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/resistance.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/reyleigh.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/rohsenow_boiling.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/stefan_boltzmann.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/mass_transfer/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/mass_transfer/drying_rate.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/reaction_engineering/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/reaction_engineering/residence_time.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/thermodynamics/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/thermodynamics/enthalpy_change.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/thermodynamics/entropy_change.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/thermodynamics/heat_of_vaporization.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/components/constants.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/constants.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/integration/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/base.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/design_rules.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/equipment.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/insulation.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/materials.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/nozzle.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/pumps.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/selection.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/pipelines/vessel.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/streams/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/streams/energy.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/__init__.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi/units/temperature.py +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi.egg-info/dependency_links.txt +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi.egg-info/requires.txt +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/processpi.egg-info/top_level.txt +0 -0
- {processpi-0.2.0.4 → processpi-0.2.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: processpi
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Python toolkit for chemical engineering simulations, equipment design, and unit conversions
|
|
5
5
|
Home-page: https://processpi.org
|
|
6
6
|
Author: Raviteja Varma Nadimpalli
|
|
@@ -182,8 +182,8 @@ from processpi.components import Water, Ethanol
|
|
|
182
182
|
water = Water()
|
|
183
183
|
ethanol = Ethanol()
|
|
184
184
|
|
|
185
|
-
print(f"Water density: {water.density()}
|
|
186
|
-
print(f"Ethanol viscosity: {ethanol.viscosity()}
|
|
185
|
+
print(f"Water density: {water.density()}")
|
|
186
|
+
print(f"Ethanol viscosity: {ethanol.viscosity()}")
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
⚠ **Note**: Component data is for educational/demo purposes only. Extended property support is in progress.
|
|
@@ -200,6 +200,7 @@ from processpi.units import VolumetricFlowRate, Diameter, Length
|
|
|
200
200
|
|
|
201
201
|
# Define pipe and fluid
|
|
202
202
|
pipe = Pipe(
|
|
203
|
+
name="Main Pipe",
|
|
203
204
|
internal_diameter=Diameter(50, "mm"),
|
|
204
205
|
length=Length(10, "m")
|
|
205
206
|
)
|
|
@@ -135,8 +135,8 @@ from processpi.components import Water, Ethanol
|
|
|
135
135
|
water = Water()
|
|
136
136
|
ethanol = Ethanol()
|
|
137
137
|
|
|
138
|
-
print(f"Water density: {water.density()}
|
|
139
|
-
print(f"Ethanol viscosity: {ethanol.viscosity()}
|
|
138
|
+
print(f"Water density: {water.density()}")
|
|
139
|
+
print(f"Ethanol viscosity: {ethanol.viscosity()}")
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
⚠ **Note**: Component data is for educational/demo purposes only. Extended property support is in progress.
|
|
@@ -153,6 +153,7 @@ from processpi.units import VolumetricFlowRate, Diameter, Length
|
|
|
153
153
|
|
|
154
154
|
# Define pipe and fluid
|
|
155
155
|
pipe = Pipe(
|
|
156
|
+
name="Main Pipe",
|
|
156
157
|
internal_diameter=Diameter(50, "mm"),
|
|
157
158
|
length=Length(10, "m")
|
|
158
159
|
)
|
|
@@ -12,10 +12,12 @@ from processpi.units import * # Import all unit classes
|
|
|
12
12
|
# Import all calculation classes for the registry. This makes them available to the engine.
|
|
13
13
|
from processpi.calculations.fluids.velocity import FluidVelocity
|
|
14
14
|
from processpi.calculations.fluids.reynolds_number import ReynoldsNumber
|
|
15
|
+
from processpi.calculations.fluids.flow_type import TypeOfFlow
|
|
15
16
|
from processpi.calculations.fluids.friction_factor_colebrookwhite import ColebrookWhite
|
|
16
17
|
from processpi.calculations.fluids.pressure_drop_darcy import PressureDropDarcy
|
|
17
18
|
from processpi.calculations.fluids.pressure_drop_fanning import PressureDropFanning
|
|
18
19
|
from processpi.calculations.fluids.pressure_drop_hazen_williams import PressureDropHazenWilliams
|
|
20
|
+
from processpi.equipment.pressure_vessel import PressureVessel
|
|
19
21
|
# Add more imports here as you implement new calculations
|
|
20
22
|
# from processpi.calculations.fluids.pressure_drop import PressureDrop
|
|
21
23
|
# from processpi.calculations.heat_transfer import HeatTransfer
|
|
@@ -59,6 +61,9 @@ class CalculationEngine:
|
|
|
59
61
|
"reynolds_number": ReynoldsNumber,
|
|
60
62
|
"re": ReynoldsNumber,
|
|
61
63
|
"reynoldsnumber": ReynoldsNumber,
|
|
64
|
+
"type_of_flow": TypeOfFlow,
|
|
65
|
+
"flow_type": TypeOfFlow,
|
|
66
|
+
"flow_regime": TypeOfFlow,
|
|
62
67
|
"colebrook_white": ColebrookWhite,
|
|
63
68
|
"friction_factor_colebrookwhite": ColebrookWhite,
|
|
64
69
|
"friction_factor": ColebrookWhite,
|
|
@@ -68,6 +73,8 @@ class CalculationEngine:
|
|
|
68
73
|
"pressure_drop": PressureDropDarcy,
|
|
69
74
|
"pressure_drop_fanning": PressureDropFanning,
|
|
70
75
|
"pressure_drop_hazen_williams": PressureDropHazenWilliams,
|
|
76
|
+
"pressure_vessel": PressureVessel,
|
|
77
|
+
"vessel_design": PressureVessel,
|
|
71
78
|
|
|
72
79
|
# Add more mappings as new calculations are added
|
|
73
80
|
# "pressure_drop": PressureDrop,
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from .biot import BiotNumber
|
|
2
|
+
from .combined_modes import ConductionConvectionCombined
|
|
3
|
+
from .condensation import CondensingVapourFilm
|
|
4
|
+
from .condensation_dropwise import DropwiseCondensation
|
|
5
|
+
from .condensation_nusselt import NusseltCondensation
|
|
6
|
+
from .conduction_heat_loss import ConductionHeatLoss
|
|
7
|
+
from .convection_heat_loss import ConvectionHeatLoss
|
|
8
|
+
from .crossflow_tube import CrossFlowSingleTube
|
|
9
|
+
from .fourier import FourierNumber
|
|
10
|
+
from .fourierlaw import FourierLaw
|
|
11
|
+
from .heat_exchanger import (
|
|
12
|
+
ConvectiveCoefficient,
|
|
13
|
+
DarcyPressureDrop,
|
|
14
|
+
KernNusselt,
|
|
15
|
+
LatentHeatDuty,
|
|
16
|
+
ReynoldsFromProperties,
|
|
17
|
+
SensibleHeatDuty,
|
|
18
|
+
)
|
|
19
|
+
from .heat_exchanger_area import HeatExchangerArea
|
|
20
|
+
from .hx_kern import (
|
|
21
|
+
ConvectiveH,
|
|
22
|
+
DarcyDrop,
|
|
23
|
+
DittusBoelter,
|
|
24
|
+
KernShellNu,
|
|
25
|
+
LatentDuty,
|
|
26
|
+
Reynolds,
|
|
27
|
+
SensibleDuty,
|
|
28
|
+
ShellDiameterEstimate,
|
|
29
|
+
TubeCountFromArea,
|
|
30
|
+
)
|
|
31
|
+
from .lmtd import LMTD
|
|
32
|
+
from .newton_cooling import NewtonCooling
|
|
33
|
+
from .ntu import NTUHeatExchanger
|
|
34
|
+
from .nusselt import NusseltNumber
|
|
35
|
+
from .overall_u import OverallHeatTransferCoefficient
|
|
36
|
+
from .peclet import PecletNumber
|
|
37
|
+
from .prandtl import PrandtlNumber
|
|
38
|
+
from .radial_cylinder import RadialHeatFlowCylinder
|
|
39
|
+
from .radiation_blackbody import BlackbodyRadiation
|
|
40
|
+
from .radiation_exchange import RadiationExchange
|
|
41
|
+
from .radiation_greybody import GreybodyRadiation
|
|
42
|
+
from .radiation_viewfactor import RadiationWithViewFactor
|
|
43
|
+
from .resistance import ThermalResistanceParallel, ThermalResistanceSeries
|
|
44
|
+
from .reyleigh import RayleighNumber
|
|
45
|
+
from .rohsenow_boiling import RohsenowBoiling
|
|
46
|
+
from .stefan_boltzmann import StefanBoltzmann
|
|
47
|
+
|
|
48
|
+
__all__ = [
|
|
49
|
+
"BiotNumber",
|
|
50
|
+
"ConductionConvectionCombined",
|
|
51
|
+
"CondensingVapourFilm",
|
|
52
|
+
"DropwiseCondensation",
|
|
53
|
+
"NusseltCondensation",
|
|
54
|
+
"ConductionHeatLoss",
|
|
55
|
+
"ConvectionHeatLoss",
|
|
56
|
+
"CrossFlowSingleTube",
|
|
57
|
+
"FourierNumber",
|
|
58
|
+
"FourierLaw",
|
|
59
|
+
"HeatExchangerArea",
|
|
60
|
+
"LMTD",
|
|
61
|
+
"NewtonCooling",
|
|
62
|
+
"NTUHeatExchanger",
|
|
63
|
+
"NusseltNumber",
|
|
64
|
+
"OverallHeatTransferCoefficient",
|
|
65
|
+
"PecletNumber",
|
|
66
|
+
"PrandtlNumber",
|
|
67
|
+
"RadialHeatFlowCylinder",
|
|
68
|
+
"BlackbodyRadiation",
|
|
69
|
+
"RadiationExchange",
|
|
70
|
+
"GreybodyRadiation",
|
|
71
|
+
"RadiationWithViewFactor",
|
|
72
|
+
"ThermalResistanceSeries",
|
|
73
|
+
"ThermalResistanceParallel",
|
|
74
|
+
"RayleighNumber",
|
|
75
|
+
"RohsenowBoiling",
|
|
76
|
+
"StefanBoltzmann",
|
|
77
|
+
"SensibleHeatDuty",
|
|
78
|
+
"LatentHeatDuty",
|
|
79
|
+
"KernNusselt",
|
|
80
|
+
"ConvectiveCoefficient",
|
|
81
|
+
"DarcyPressureDrop",
|
|
82
|
+
"ReynoldsFromProperties",
|
|
83
|
+
"SensibleDuty",
|
|
84
|
+
"LatentDuty",
|
|
85
|
+
"Reynolds",
|
|
86
|
+
"DittusBoelter",
|
|
87
|
+
"KernShellNu",
|
|
88
|
+
"ConvectiveH",
|
|
89
|
+
"TubeCountFromArea",
|
|
90
|
+
"ShellDiameterEstimate",
|
|
91
|
+
"DarcyDrop",
|
|
92
|
+
]
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"""Deprecated names for the heat exchanger calculations in ``hx_kern``.
|
|
2
|
+
|
|
3
|
+
These six classes used to be a second copy of calculations that ``hx_kern``
|
|
4
|
+
also implements, under other names and keywords. Only the ``hx_kern`` set is
|
|
5
|
+
used by the exchangers, so it is now the single implementation. Each class
|
|
6
|
+
here keeps its old keywords, its old error messages, its ``inputs`` and its
|
|
7
|
+
return type, maps the keywords onto the ``hx_kern`` class and warns with a
|
|
8
|
+
``DeprecationWarning``. The formulas were identical, so the numbers are too.
|
|
9
|
+
|
|
10
|
+
======================== ================== ==================================
|
|
11
|
+
old name use instead keywords renamed
|
|
12
|
+
======================== ================== ==================================
|
|
13
|
+
SensibleHeatDuty SensibleDuty mass_flow_rate -> m_dot,
|
|
14
|
+
specific_heat -> cp
|
|
15
|
+
LatentHeatDuty LatentDuty mass_flow_rate -> m_dot
|
|
16
|
+
KernNusselt DittusBoelter none (0.023 Re^0.8 Pr^n is the
|
|
17
|
+
Dittus-Boelter form, not Kern's
|
|
18
|
+
shell-side ``KernShellNu``)
|
|
19
|
+
ConvectiveCoefficient ConvectiveH thermal_conductivity -> k,
|
|
20
|
+
characteristic_diameter ->
|
|
21
|
+
diameter
|
|
22
|
+
DarcyPressureDrop DarcyDrop friction_factor -> f
|
|
23
|
+
ReynoldsFromProperties Reynolds none
|
|
24
|
+
======================== ================== ==================================
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from __future__ import annotations
|
|
28
|
+
|
|
29
|
+
import warnings
|
|
30
|
+
from typing import Dict, Tuple, Type
|
|
31
|
+
|
|
32
|
+
from ..base import CalculationBase
|
|
33
|
+
from .hx_kern import (
|
|
34
|
+
ConvectiveH,
|
|
35
|
+
DarcyDrop,
|
|
36
|
+
DittusBoelter,
|
|
37
|
+
LatentDuty,
|
|
38
|
+
Reynolds,
|
|
39
|
+
SensibleDuty,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class _DeprecatedHXCalculation(CalculationBase):
|
|
44
|
+
"""Old keyword interface over one ``hx_kern`` calculation.
|
|
45
|
+
|
|
46
|
+
``_keyword_map`` lists the required old keywords, in the order the old
|
|
47
|
+
class checked them, with the ``hx_kern`` keyword each one becomes.
|
|
48
|
+
``_optional`` lists keywords passed through unchanged when given.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
_canonical: Type[CalculationBase]
|
|
52
|
+
_keyword_map: Tuple[Tuple[str, str], ...]
|
|
53
|
+
_optional: Tuple[str, ...] = ()
|
|
54
|
+
|
|
55
|
+
def __init__(self, **kwargs):
|
|
56
|
+
warnings.warn(
|
|
57
|
+
f"{type(self).__name__} is deprecated; use "
|
|
58
|
+
f"processpi.calculations.heat_transfer.{self._canonical.__name__} "
|
|
59
|
+
f"({self._rename_note()}).",
|
|
60
|
+
DeprecationWarning,
|
|
61
|
+
stacklevel=2,
|
|
62
|
+
)
|
|
63
|
+
super().__init__(**kwargs)
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def _rename_note(cls) -> str:
|
|
67
|
+
renamed = [f"{old} -> {new}" for old, new in cls._keyword_map if old != new]
|
|
68
|
+
return "keywords " + ", ".join(renamed) if renamed else "same keywords"
|
|
69
|
+
|
|
70
|
+
def validate_inputs(self):
|
|
71
|
+
for old, _new in self._keyword_map:
|
|
72
|
+
if old not in self.inputs:
|
|
73
|
+
raise ValueError(f"Missing required input: {old}")
|
|
74
|
+
|
|
75
|
+
def _canonical_inputs(self) -> Dict[str, object]:
|
|
76
|
+
mapped = {}
|
|
77
|
+
for old, new in self._keyword_map:
|
|
78
|
+
# Same check and message as the old class, under the old name.
|
|
79
|
+
self._get_value(self.inputs[old], old)
|
|
80
|
+
mapped[new] = self.inputs[old]
|
|
81
|
+
for key in self._optional:
|
|
82
|
+
if key in self.inputs:
|
|
83
|
+
mapped[key] = self.inputs[key]
|
|
84
|
+
return mapped
|
|
85
|
+
|
|
86
|
+
def calculate(self):
|
|
87
|
+
return self._canonical(**self._canonical_inputs()).calculate()
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class SensibleHeatDuty(_DeprecatedHXCalculation):
|
|
91
|
+
"""Q = m * Cp * (Tin - Tout). Deprecated: use ``SensibleDuty``."""
|
|
92
|
+
|
|
93
|
+
_canonical = SensibleDuty
|
|
94
|
+
_keyword_map = (
|
|
95
|
+
("mass_flow_rate", "m_dot"),
|
|
96
|
+
("specific_heat", "cp"),
|
|
97
|
+
("t_in", "t_in"),
|
|
98
|
+
("t_out", "t_out"),
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class LatentHeatDuty(_DeprecatedHXCalculation):
|
|
103
|
+
"""Q = m * lambda. Deprecated: use ``LatentDuty``."""
|
|
104
|
+
|
|
105
|
+
_canonical = LatentDuty
|
|
106
|
+
_keyword_map = (
|
|
107
|
+
("mass_flow_rate", "m_dot"),
|
|
108
|
+
("latent_heat", "latent_heat"),
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class KernNusselt(_DeprecatedHXCalculation):
|
|
113
|
+
"""Nu = 0.023 * Re^0.8 * Pr^n. Deprecated: use ``DittusBoelter``.
|
|
114
|
+
|
|
115
|
+
Despite the name this is the Dittus-Boelter tube-side correlation, the
|
|
116
|
+
same formula and default n = 0.4 as ``DittusBoelter``. Kern's shell-side
|
|
117
|
+
correlation is ``KernShellNu``.
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
_canonical = DittusBoelter
|
|
121
|
+
_keyword_map = (
|
|
122
|
+
("reynolds", "reynolds"),
|
|
123
|
+
("prandtl", "prandtl"),
|
|
124
|
+
)
|
|
125
|
+
_optional = ("n",)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class ConvectiveCoefficient(_DeprecatedHXCalculation):
|
|
129
|
+
"""h = Nu * k / D. Deprecated: use ``ConvectiveH``."""
|
|
130
|
+
|
|
131
|
+
_canonical = ConvectiveH
|
|
132
|
+
_keyword_map = (
|
|
133
|
+
("nusselt", "nusselt"),
|
|
134
|
+
("thermal_conductivity", "k"),
|
|
135
|
+
("characteristic_diameter", "diameter"),
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class DarcyPressureDrop(_DeprecatedHXCalculation):
|
|
140
|
+
"""dP = f * (L / D) * (rho * v^2 / 2), f the Darcy factor. Deprecated: use ``DarcyDrop``.
|
|
141
|
+
|
|
142
|
+
The old body grouped ``rho * v * v / 2`` before multiplying and
|
|
143
|
+
``DarcyDrop`` multiplies left to right, so a result can differ from the
|
|
144
|
+
old one in the last bit or two of the float (at most 4e-16 relative over
|
|
145
|
+
2700 random cases); the formula is the same.
|
|
146
|
+
"""
|
|
147
|
+
|
|
148
|
+
_canonical = DarcyDrop
|
|
149
|
+
_keyword_map = (
|
|
150
|
+
("friction_factor", "f"),
|
|
151
|
+
("length", "length"),
|
|
152
|
+
("diameter", "diameter"),
|
|
153
|
+
("density", "density"),
|
|
154
|
+
("velocity", "velocity"),
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class ReynoldsFromProperties(_DeprecatedHXCalculation):
|
|
159
|
+
"""Re = rho * v * D / mu. Deprecated: use ``Reynolds``."""
|
|
160
|
+
|
|
161
|
+
_canonical = Reynolds
|
|
162
|
+
_keyword_map = (
|
|
163
|
+
("density", "density"),
|
|
164
|
+
("velocity", "velocity"),
|
|
165
|
+
("diameter", "diameter"),
|
|
166
|
+
("viscosity", "viscosity"),
|
|
167
|
+
)
|
{processpi-0.2.0.4 → processpi-0.2.2}/processpi/calculations/heat_transfer/heat_exchanger_area.py
RENAMED
|
@@ -14,7 +14,9 @@ class HeatExchangerArea(CalculationBase):
|
|
|
14
14
|
for key in required:
|
|
15
15
|
if key not in self.inputs:
|
|
16
16
|
raise ValueError(f"Missing required input: {key}")
|
|
17
|
-
|
|
17
|
+
dtlm = self.inputs["log_mean_temp_diff"]
|
|
18
|
+
dtlm_val = dtlm.value if hasattr(dtlm, "value") else float(dtlm)
|
|
19
|
+
if dtlm_val <= 0:
|
|
18
20
|
raise ValueError("Log mean temperature difference must be positive")
|
|
19
21
|
|
|
20
22
|
def calculate(self):
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import math
|
|
4
|
+
|
|
5
|
+
from ..base import CalculationBase
|
|
6
|
+
from ...units import HeatFlow, HeatTransferCoefficient, Pressure
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SensibleDuty(CalculationBase):
|
|
10
|
+
"""Q = m * Cp * |Tin - Tout|. Replaces the deprecated ``SensibleHeatDuty``."""
|
|
11
|
+
|
|
12
|
+
def validate_inputs(self):
|
|
13
|
+
for key in ("m_dot", "cp", "t_in", "t_out"):
|
|
14
|
+
if key not in self.inputs:
|
|
15
|
+
raise ValueError(f"Missing required input: {key}")
|
|
16
|
+
|
|
17
|
+
def calculate(self):
|
|
18
|
+
m = self._get_value(self.inputs["m_dot"], "m_dot")
|
|
19
|
+
cp = self._get_value(self.inputs["cp"], "cp")
|
|
20
|
+
t_in = self._get_value(self.inputs["t_in"], "t_in")
|
|
21
|
+
t_out = self._get_value(self.inputs["t_out"], "t_out")
|
|
22
|
+
return HeatFlow(abs(m * cp * (t_in - t_out)), "W")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class LatentDuty(CalculationBase):
|
|
26
|
+
"""Q = m * lambda. Replaces the deprecated ``LatentHeatDuty``."""
|
|
27
|
+
|
|
28
|
+
def validate_inputs(self):
|
|
29
|
+
for key in ("m_dot", "latent_heat"):
|
|
30
|
+
if key not in self.inputs:
|
|
31
|
+
raise ValueError(f"Missing required input: {key}")
|
|
32
|
+
|
|
33
|
+
def calculate(self):
|
|
34
|
+
m = self._get_value(self.inputs["m_dot"], "m_dot")
|
|
35
|
+
latent = self._get_value(self.inputs["latent_heat"], "latent_heat")
|
|
36
|
+
return HeatFlow(abs(m * latent), "W")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class Reynolds(CalculationBase):
|
|
40
|
+
"""Re = rho * v * D / mu. Replaces the deprecated ``ReynoldsFromProperties``."""
|
|
41
|
+
|
|
42
|
+
def validate_inputs(self):
|
|
43
|
+
for key in ("density", "velocity", "diameter", "viscosity"):
|
|
44
|
+
if key not in self.inputs:
|
|
45
|
+
raise ValueError(f"Missing required input: {key}")
|
|
46
|
+
|
|
47
|
+
def calculate(self):
|
|
48
|
+
rho = self._get_value(self.inputs["density"], "density")
|
|
49
|
+
v = self._get_value(self.inputs["velocity"], "velocity")
|
|
50
|
+
d = self._get_value(self.inputs["diameter"], "diameter")
|
|
51
|
+
mu = self._get_value(self.inputs["viscosity"], "viscosity")
|
|
52
|
+
return (rho * v * d) / mu
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class DittusBoelter(CalculationBase):
|
|
56
|
+
"""Dittus-Boelter: Nu = 0.023 * Re^0.8 * Pr^n, n = 0.4 heating (default), 0.3 cooling.
|
|
57
|
+
|
|
58
|
+
Replaces the deprecated ``KernNusselt``, which was this same formula.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def validate_inputs(self):
|
|
62
|
+
for key in ("reynolds", "prandtl"):
|
|
63
|
+
if key not in self.inputs:
|
|
64
|
+
raise ValueError(f"Missing required input: {key}")
|
|
65
|
+
|
|
66
|
+
def calculate(self):
|
|
67
|
+
re = self._get_value(self.inputs["reynolds"], "reynolds")
|
|
68
|
+
pr = self._get_value(self.inputs["prandtl"], "prandtl")
|
|
69
|
+
n = self.inputs.get("n", 0.4)
|
|
70
|
+
return 0.023 * re**0.8 * pr**n
|
|
71
|
+
|
|
72
|
+
class KernShellNu(CalculationBase):
|
|
73
|
+
def validate_inputs(self):
|
|
74
|
+
for key in ("reynolds", "prandtl"):
|
|
75
|
+
if key not in self.inputs:
|
|
76
|
+
raise ValueError(f"Missing required input: {key}")
|
|
77
|
+
|
|
78
|
+
def calculate(self):
|
|
79
|
+
re = self._get_value(self.inputs["reynolds"], "reynolds")
|
|
80
|
+
pr = self._get_value(self.inputs["prandtl"], "prandtl")
|
|
81
|
+
return 0.36 * re**0.55 * pr**(1 / 3)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class ConvectiveH(CalculationBase):
|
|
85
|
+
"""h = Nu * k / D. Replaces the deprecated ``ConvectiveCoefficient``."""
|
|
86
|
+
|
|
87
|
+
def validate_inputs(self):
|
|
88
|
+
for key in ("nusselt", "k", "diameter"):
|
|
89
|
+
if key not in self.inputs:
|
|
90
|
+
raise ValueError(f"Missing required input: {key}")
|
|
91
|
+
|
|
92
|
+
def calculate(self):
|
|
93
|
+
nu = self._get_value(self.inputs["nusselt"], "nusselt")
|
|
94
|
+
k = self._get_value(self.inputs["k"], "k")
|
|
95
|
+
d = self._get_value(self.inputs["diameter"], "diameter")
|
|
96
|
+
return HeatTransferCoefficient((nu * k) / d, "W/m2K")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class TubeCountFromArea(CalculationBase):
|
|
100
|
+
def validate_inputs(self):
|
|
101
|
+
for key in ("area", "tube_od", "tube_length"):
|
|
102
|
+
if key not in self.inputs:
|
|
103
|
+
raise ValueError(f"Missing required input: {key}")
|
|
104
|
+
|
|
105
|
+
def calculate(self):
|
|
106
|
+
area = self._get_value(self.inputs["area"], "area")
|
|
107
|
+
d_o = self._get_value(self.inputs["tube_od"], "tube_od")
|
|
108
|
+
l_t = self._get_value(self.inputs["tube_length"], "tube_length")
|
|
109
|
+
return max(1, math.ceil(area / (math.pi * d_o * l_t)))
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class ShellDiameterEstimate(CalculationBase):
|
|
113
|
+
def validate_inputs(self):
|
|
114
|
+
for key in ("tube_count", "tube_pitch"):
|
|
115
|
+
if key not in self.inputs:
|
|
116
|
+
raise ValueError(f"Missing required input: {key}")
|
|
117
|
+
|
|
118
|
+
def calculate(self):
|
|
119
|
+
n_t = self._get_value(self.inputs["tube_count"], "tube_count")
|
|
120
|
+
p_t = self._get_value(self.inputs["tube_pitch"], "tube_pitch")
|
|
121
|
+
return 0.637 * p_t * (n_t ** 0.5)
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class DarcyDrop(CalculationBase):
|
|
125
|
+
"""Darcy-Weisbach: dP = f * (L / D) * rho * v^2 / 2.
|
|
126
|
+
|
|
127
|
+
``f`` is the Darcy friction factor (4 times the Fanning factor).
|
|
128
|
+
Replaces the deprecated ``DarcyPressureDrop``.
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
def validate_inputs(self):
|
|
132
|
+
for key in ("f", "length", "diameter", "density", "velocity"):
|
|
133
|
+
if key not in self.inputs:
|
|
134
|
+
raise ValueError(f"Missing required input: {key}")
|
|
135
|
+
|
|
136
|
+
def calculate(self):
|
|
137
|
+
f = self._get_value(self.inputs["f"], "f")
|
|
138
|
+
l = self._get_value(self.inputs["length"], "length")
|
|
139
|
+
d = self._get_value(self.inputs["diameter"], "diameter")
|
|
140
|
+
rho = self._get_value(self.inputs["density"], "density")
|
|
141
|
+
v = self._get_value(self.inputs["velocity"], "velocity")
|
|
142
|
+
return Pressure(f * (l / d) * rho * v * v / 2.0, "Pa")
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class CondensationHTC(CalculationBase):
|
|
146
|
+
"""
|
|
147
|
+
Nusselt film condensation correlation
|
|
148
|
+
for vertical tube condensation.
|
|
149
|
+
|
|
150
|
+
Preliminary engineering approximation.
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
def validate_inputs(self):
|
|
154
|
+
|
|
155
|
+
required = (
|
|
156
|
+
"rho_l",
|
|
157
|
+
"rho_v",
|
|
158
|
+
"mu_l",
|
|
159
|
+
"k_l",
|
|
160
|
+
"h_fg",
|
|
161
|
+
"delta_t",
|
|
162
|
+
"length",
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
for key in required:
|
|
166
|
+
|
|
167
|
+
if key not in self.inputs:
|
|
168
|
+
|
|
169
|
+
raise ValueError(
|
|
170
|
+
f"Missing required input: {key}"
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
def calculate(self):
|
|
174
|
+
|
|
175
|
+
rho_l = self._get_value(
|
|
176
|
+
self.inputs["rho_l"],
|
|
177
|
+
"rho_l",
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
rho_v = self._get_value(
|
|
181
|
+
self.inputs["rho_v"],
|
|
182
|
+
"rho_v",
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
mu_l = self._get_value(
|
|
186
|
+
self.inputs["mu_l"],
|
|
187
|
+
"mu_l",
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
k_l = self._get_value(
|
|
191
|
+
self.inputs["k_l"],
|
|
192
|
+
"k_l",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
h_fg = self._get_value(
|
|
196
|
+
self.inputs["h_fg"],
|
|
197
|
+
"h_fg",
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
delta_t = self._get_value(
|
|
201
|
+
self.inputs["delta_t"],
|
|
202
|
+
"delta_t",
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
length = self._get_value(
|
|
206
|
+
self.inputs["length"],
|
|
207
|
+
"length",
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
g = 9.81
|
|
211
|
+
|
|
212
|
+
h = 0.943 * (
|
|
213
|
+
(
|
|
214
|
+
rho_l
|
|
215
|
+
* (rho_l - rho_v)
|
|
216
|
+
* g
|
|
217
|
+
* h_fg
|
|
218
|
+
* (k_l ** 3)
|
|
219
|
+
)
|
|
220
|
+
/ (
|
|
221
|
+
mu_l
|
|
222
|
+
* length
|
|
223
|
+
* delta_t
|
|
224
|
+
)
|
|
225
|
+
) ** 0.25
|
|
226
|
+
|
|
227
|
+
return HeatTransferCoefficient(
|
|
228
|
+
h,
|
|
229
|
+
"W/m2K",
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
class BoilingHTC(CalculationBase):
|
|
233
|
+
"""
|
|
234
|
+
Simplified boiling heat-transfer coefficient.
|
|
235
|
+
|
|
236
|
+
Preliminary engineering approximation.
|
|
237
|
+
"""
|
|
238
|
+
|
|
239
|
+
def validate_inputs(self):
|
|
240
|
+
|
|
241
|
+
required = (
|
|
242
|
+
"heat_flux",
|
|
243
|
+
"pressure",
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
for key in required:
|
|
247
|
+
|
|
248
|
+
if key not in self.inputs:
|
|
249
|
+
|
|
250
|
+
raise ValueError(
|
|
251
|
+
f"Missing required input: {key}"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
def calculate(self):
|
|
255
|
+
|
|
256
|
+
q_flux = self._get_value(
|
|
257
|
+
self.inputs["heat_flux"],
|
|
258
|
+
"heat_flux",
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
pressure = self._get_value(
|
|
262
|
+
self.inputs["pressure"],
|
|
263
|
+
"pressure",
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
# ======================================================
|
|
267
|
+
# SIMPLE ENGINEERING APPROXIMATION
|
|
268
|
+
# ======================================================
|
|
269
|
+
|
|
270
|
+
h = (
|
|
271
|
+
55.0
|
|
272
|
+
* (q_flux ** 0.67)
|
|
273
|
+
* (pressure ** 0.12)
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
# prevent unrealistic values
|
|
277
|
+
h = max(
|
|
278
|
+
1500.0,
|
|
279
|
+
min(h, 15000.0),
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
return HeatTransferCoefficient(
|
|
283
|
+
h,
|
|
284
|
+
"W/m2K",
|
|
285
|
+
)
|
|
@@ -14,9 +14,22 @@ class LMTD(CalculationBase):
|
|
|
14
14
|
raise ValueError(f"Missing required input: {key}")
|
|
15
15
|
|
|
16
16
|
def calculate(self):
|
|
17
|
+
eps = 1e-6
|
|
17
18
|
|
|
18
19
|
dT1 = self._get_value(self.inputs["dT1"], "temperature")
|
|
19
20
|
dT2 = self._get_value(self.inputs["dT2"], "temperature")
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
if dT1 <= 0 or dT2 <= 0:
|
|
23
|
+
raise ValueError("Invalid temperature approach in LMTD calculation.")
|
|
24
|
+
|
|
25
|
+
dT1 = max(dT1, eps)
|
|
26
|
+
dT2 = max(dT2, eps)
|
|
27
|
+
|
|
28
|
+
if abs(dT1 - dT2) < eps:
|
|
29
|
+
return dT1
|
|
30
|
+
|
|
31
|
+
ratio = dT1 / dT2
|
|
32
|
+
if ratio <= 0:
|
|
33
|
+
raise ValueError("Invalid temperature approach in LMTD calculation.")
|
|
34
|
+
|
|
35
|
+
return (dT1 - dT2) / math.log(ratio)
|